{"id":2618,"date":"2023-03-09T08:48:22","date_gmt":"2023-03-09T08:48:22","guid":{"rendered":"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/?page_id=2618"},"modified":"2023-04-28T04:21:53","modified_gmt":"2023-04-28T04:21:53","slug":"full-video-colorful-light","status":"publish","type":"page","link":"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/full-video-colorful-light\/","title":{"rendered":"Full Video Colorful Light"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2618\" class=\"elementor elementor-2618\">\n\t\t\t\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-99520c5 elementor-section-full_width elementor-section-content-middle bramha_header mobile_header elementor-section-height-default elementor-section-height-default\" data-id=\"99520c5\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-9791b6c\" data-id=\"9791b6c\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d6dafde elementor-widget elementor-widget-image\" data-id=\"d6dafde\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.9.2 - 21-12-2022 *\/\n.elementor-widget-image{text-align:center}.elementor-widget-image a{display:inline-block}.elementor-widget-image a img[src$=\".svg\"]{width:48px}.elementor-widget-image img{vertical-align:middle;display:inline-block}<\/style>\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"\/envato\/bramha\/preview\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"160\" height=\"40\" src=\"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-content\/uploads\/2023\/01\/Logo.png\" class=\"attachment-full size-full wp-image-36\" alt=\"\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-f8f905b\" data-id=\"f8f905b\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-519e823 menu-icon elementor-align-right elementor-widget__width-auto elementor-widget elementor-widget-button\" data-id=\"519e823\" data-element_type=\"widget\" id=\"open_offcanvas_mobile\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t<a class=\"elementor-button elementor-size-sm\" role=\"button\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-text\"><\/span>\n\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-d193033 elementor-section-full_width elementor-section-height-full elementor-section-items-stretch full-bg elementor-section-height-default\" data-id=\"d193033\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-007391b page-left content_main_left elementor-hidden-mobile\" data-id=\"007391b\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b35cf3e elementor-widget elementor-widget-image\" data-id=\"b35cf3e\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"\/envato\/bramha\/preview\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"40\" height=\"160\" src=\"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-content\/uploads\/2023\/01\/desktop-logo.png\" class=\"attachment-full size-full wp-image-508\" alt=\"\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-352e755 menu-icon elementor-widget elementor-widget-button\" data-id=\"352e755\" data-element_type=\"widget\" id=\"open_offcanvas\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t<a class=\"elementor-button elementor-size-sm\" role=\"button\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-text\"><\/span>\n\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2c57c3f social_icons elementor-icon-list--layout-traditional elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list\" data-id=\"2c57c3f\" data-element_type=\"widget\" data-widget_type=\"icon-list.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<link rel=\"stylesheet\" href=\"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-content\/uploads\/elementor\/css\/custom-widget-icon-list.min.css?ver=1676633232\">\t\t<ul class=\"elementor-icon-list-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"#\">\n\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">FB<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"#\">\n\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">TW<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"#\">\n\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">IN<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-55e9b5a content_main_middle slider-content main-image-slider\" data-id=\"55e9b5a\" data-element_type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f39691b h-100 slider-custom elementor-absolute elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"f39691b\" data-element_type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<!--<video width=\"100%\" height=\"100%\" autoplay muted>-->\r\n<!--  <source src=\"\" type=\"video\/mp4\">-->\r\n<!--  <source src=\"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-content\/uploads\/2023\/03\/forest.mp4\" type=\"video\/ogg\"> -->\r\n<!--<\/video>-->\r\n      <video class=\"custom-mainvideo\" autoplay loop muted>\r\n        <source src=\"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-content\/uploads\/2023\/03\/forest.mp4\" \/>\r\n      <\/video>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b1fbbe3 h-100 slider-custom elementor-absolute elementor-widget elementor-widget-html\" data-id=\"b1fbbe3\" data-element_type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div class=\"custom-overlay-class\">\n \n<\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8bcfc87 elementor-absolute elementor-widget elementor-widget-html\" data-id=\"8bcfc87\" data-element_type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<script>\n    \/*\n  Click and drag to attract\n  Right click to repulse\n  Mouse-wheel click to create a time dilation field\n  Use the Controls to decrease or increase\n  the particle count to tweak performance.\n*\/\n\n+(function(root) {\n  'use strict';\n  var Vector3D = function Vector3D(x, y, z) {\n    this.set(x, y, z);\n  }, v3dp = Vector3D.prototype;\n\n  v3dp.dot2d = function(x, y) {\n    return ((this.x * x) + (this.y * y));\n  };\n\n  v3dp.dot3d = function(x, y, z) {\n    return ((this.x * x) + (this.y * y) + (this.z * z));\n  };\n\n  v3dp.set = function(x, y, z) {\n    this.x = x;\n    this.y = y;\n    this.z = z;\n    \n    return this;\n  };\n\n  v3dp.add = function(other) {\n    if(typeof other === \"number\") {\n      this.x += other, this.y += other, this.z += other;\n      return this;\n    }\n    this.x += other.x, this.y += other.y, this.z += other.z;\n    return this;\n  };\n\n  v3dp.sub = function(other) {\n    if(typeof other === \"number\") {\n      this.x -= other, this.y -= other, this.z -= other;\n      return this;\n    }\n    this.x -= other.x, this.y -= other.y, this.z -= other.z;\n    return this;\n  };\n\n  v3dp.mul = function(other) {\n    if(typeof other === \"number\") {\n      this.x *= other, this.y *= other, this.z *= other;\n      return this;\n    }\n    this.x *= other.x, this.y *= other.y, this.z *= other.z;\n    return this;\n  };\n\n  v3dp.div = function(other) {\n    if(typeof other === \"number\") {\n      this.x \/= other, this.y \/= other, this.z \/= other;\n      return this;\n    }\n    this.x \/= other.x, this.y \/= other.y, this.z \/= other.z;\n    return this;\n  };\n\n  v3dp.move = function(dest) {\n    if(dest instanceof Vector3D) {\n      dest.x = this.x, dest.y = this.y, dest.z = this.z;\n    }\n    return this;\n  };\n\n  v3dp.within2d = function(bounds) {\n    return (this.x >= 0 && this.x < bounds.x && this.y >= 0 && this.y < bounds.y);\n  };\n\n  v3dp.wrap2d = function(bounds) {\n    if(this.x > bounds.x) {\n      this.x = 0;\n      return true;\n    }\n\n    if(this.x < 0) {\n      this.x = bounds.x;\n      return true;\n    }\n\n    if(this.y > bounds.y) {\n      this.y = 0;\n      return true;\n    }\n\n    if(this.y < 0) {\n      this.y = bounds.y;\n      return true;\n    }\n  };\n\n  v3dp.eq = function(other) {\n    return (other instanceof Vector3D) && this.x === other.x && this.y === other.y && this.z === other.z;\n  };\n  \n  v3dp.distance = function(other) {\n    var dx = (this.x - other.x),\n        dy = (this.y - other.y);\n    \n    return Math.sqrt(dx * dx + dy * dy);\n  };\n  \n  v3dp.clone = function() {\n    return new Vector3D(this.x, this.y, this.z);\n  };\n\n  root.Vector3D = Vector3D;\n}(window));\n\n+(function(root) {\n  'use strict';\n  \/\/ a simple non-optimized Perlin Simplex Noise. I wrote this\n  \/\/ to understand Simplex Noise a bit more.\n\n  \/\/ fully self-contained state, so you can influence the outcome\n  \/\/ of each simplex noise state\n  var Perlin = function Perlin() {\n    this.grad3 = [\n      new Vector3D(1,1,0), new Vector3D(-1,1,0), new Vector3D(1,-1,0), new Vector3D(-1,-1,0),\n      new Vector3D(1,0,1), new Vector3D(-1,0,1), new Vector3D(1,0,-1), new Vector3D(-1,0,-1),\n      new Vector3D(0,1,1), new Vector3D(0,-1,1), new Vector3D(0,1,-1), new Vector3D(0,-1,-1)\n    ];\n\n    this.p = [\n      0x97, 0xa0, 0x89, 0x5b, 0x5a, 0x0f, 0x83, 0x0d, 0xc9, 0x5f, 0x60, 0x35, 0xc2, 0xe9, 0x07, 0xe1, \n      0x8c, 0x24, 0x67, 0x1e, 0x45, 0x8e, 0x08, 0x63, 0x25, 0xf0, 0x15, 0x0a, 0x17, 0xbe, 0x06, 0x94, \n      0xf7, 0x78, 0xea, 0x4b, 0x00, 0x1a, 0xc5, 0x3e, 0x5e, 0xfc, 0xdb, 0xcb, 0x75, 0x23, 0x0b, 0x20, \n      0x39, 0xb1, 0x21, 0x58, 0xed, 0x95, 0x38, 0x57, 0xae, 0x14, 0x7d, 0x88, 0xab, 0xa8, 0x44, 0xaf, \n      0x4a, 0xa5, 0x47, 0x86, 0x8b, 0x30, 0x1b, 0xa6, 0x4d, 0x92, 0x9e, 0xe7, 0x53, 0x6f, 0xe5, 0x7a, \n      0x3c, 0xd3, 0x85, 0xe6, 0xdc, 0x69, 0x5c, 0x29, 0x37, 0x2e, 0xf5, 0x28, 0xf4, 0x66, 0x8f, 0x36, \n      0x41, 0x19, 0x3f, 0xa1, 0x01, 0xd8, 0x50, 0x49, 0xd1, 0x4c, 0x84, 0xbb, 0xd0, 0x59, 0x12, 0xa9, \n      0xc8, 0xc4, 0x87, 0x82, 0x74, 0xbc, 0x9f, 0x56, 0xa4, 0x64, 0x6d, 0xc6, 0xad, 0xba, 0x03, 0x40, \n      0x34, 0xd9, 0xe2, 0xfa, 0x7c, 0x7b, 0x05, 0xca, 0x26, 0x93, 0x76, 0x7e, 0xff, 0x52, 0x55, 0xd4, \n      0xcf, 0xce, 0x3b, 0xe3, 0x2f, 0x10, 0x3a, 0x11, 0xb6, 0xbd, 0x1c, 0x2a, 0xdf, 0xb7, 0xaa, 0xd5, \n      0x77, 0xf8, 0x98, 0x02, 0x2c, 0x9a, 0xa3, 0x46, 0xdd, 0x99, 0x65, 0x9b, 0xa7, 0x2b, 0xac, 0x09, \n      0x81, 0x16, 0x27, 0xfd, 0x13, 0x62, 0x6c, 0x6e, 0x4f, 0x71, 0xe0, 0xe8, 0xb2, 0xb9, 0x70, 0x68, \n      0xda, 0xf6, 0x61, 0xe4, 0xfb, 0x22, 0xf2, 0xc1, 0xee, 0xd2, 0x90, 0x0c, 0xbf, 0xb3, 0xa2, 0xf1, \n      0x51, 0x33, 0x91, 0xeb, 0xf9, 0x0e, 0xef, 0x6b, 0x31, 0xc0, 0xd6, 0x1f, 0xb5, 0xc7, 0x6a, 0x9d, \n      0xb8, 0x54, 0xcc, 0xb0, 0x73, 0x79, 0x32, 0x2d, 0x7f, 0x04, 0x96, 0xfe, 0x8a, 0xec, 0xcd, 0x5d, \n      0xde, 0x72, 0x43, 0x1d, 0x18, 0x48, 0xf3, 0x8d, 0x80, 0xc3, 0x4e, 0x42, 0xd7, 0x3d, 0x9c, 0xb4\n    ];\n\n    this.permutation = new Array(512);\n    this.gradP       = new Array(512);\n\n    \/\/ skew and unskew factors for 2D or 3D, can be modified per state!\n    this.F2 = (0.5 * (Math.sqrt(3) - 1));\n    this.G2 = ((3 - Math.sqrt(3)) \/ 6);\n    this.F3 = (1 \/ 3);\n    this.G3 = (1 \/ 6);\n  }, pp = Perlin.prototype;\n\n  pp.init = function(prng) {\n    if(typeof prng !== \"function\") {\n      throw new TypeError(\"prng needs to be a function returning an int between 0 and 255\");\n    }\n\n    for(var i = 0; i < 400; i += 1) {\n      var randval = (this.p[i] ^ prng());\n      this.permutation[i] = this.permutation[i + 256] = randval;\n      this.gradP[i] = this.gradP[i + 256] = this.grad3[randval % this.grad3.length];\n    }\n  };\n\n  \/\/ I removed the pp.simplex2d function, because I don't need it in this project\n  \/\/ pp.simplex2d = function(x, y) {};\n\n  pp.simplex3d = function(x, y, z) {\n    var n0, n1, n2, n3, i1, j1, k1, i2, j2, k2,\n        x1, y1, z1, x2, y2, z2, x3, y3, z3,\n        gi0, gi1, gi2, gi3, t0, t1, t2, t3,\n        s = ((x + y + z) * this.F3),\n        i = Math.floor(x + s), j = Math.floor(y + s), k = Math.floor(z + s),\n        t = ((i + j + k) * this.G3),\n        x0 = (x - i + t), y0 = (y - j + t), z0 = (z - k + t);\n\n    if(x0 >= y0) {\n      if(y0 >= z0)      { \n        i1=1; j1=0; k1=0; i2=1; j2=1; k2=0; \n      } else if(x0 >= z0) { \n        i1=1; j1=0; k1=0; i2=1; j2=0; k2=1; \n      } else { \n        i1=0; j1=0; k1=1; i2=1; j2=0; k2=1; \n      }\n    } else {\n      if(y0 < z0) { \n        i1=0; j1=0; k1=1; i2=0; j2=1; k2=1; \n      } else if(x0 < z0) { \n        i1=0; j1=1; k1=0; i2=0; j2=1; k2=1; \n      } else { \n        i1=0; j1=1; k1=0; i2=1; j2=1; k2=0; \n      }\n    }\n\n    x1 = (x0 - i1 + this.G3), y1 = (y0 - j1 + this.G3), z1 = (z0 - k1 + this.G3);\n    x2 = (x0 - i2 + 2 * this.G3), y2 = (y0 - j2 + 2 * this.G3), z2 = (z0 - k2 + 2 * this.G3);\n    x3 = (x0 - 1 + 3 * this.G3), y3 = (y0 - 1 + 3 * this.G3), z3 = (z0 - 1 + 3 * this.G3);\n\n    i &= 255, j &= 255, k &= 255;\n\n    gi0 = this.gradP[i + this.permutation[j + this.permutation[k]]];\n    gi1 = this.gradP[i + i1 + this.permutation[j + j1 + this.permutation[k + k1]]];\n    gi2 = this.gradP[i + i2 + this.permutation[j + j2 + this.permutation[k + k2]]];\n    gi3 = this.gradP[i + 1 + this.permutation[j + 1 + this.permutation[k + 1]]];\n\n    t0 = (0.6 - x0 * x0 - y0 * y0 - z0 * z0);\n    t1 = (0.6 - x1 * x1 - y1 * y1 - z1 * z1);\n    t2 = (0.6 - x2 * x2 - y2 * y2 - z2 * z2);\n    t3 = (0.6 - x3 * x3 - y3 * y3 - z3 * z3);\n    n0 = (t0 < 0 ? 0 : (t0 *= t0, t0 * t0 * gi0.dot3d(x0, y0, z0)));\n    n1 = (t1 < 0 ? 0 : (t1 *= t1, t1 * t1 * gi1.dot3d(x1, y1, z1)));\n    n2 = (t2 < 0 ? 0 : (t2 *= t2, t2 * t2 * gi2.dot3d(x2, y2, z2)));\n    n3 = (t3 < 0 ? 0 : (t3 *= t3, t3 * t3 * gi3.dot3d(x3, y3, z3)));\n\n    return (32 * (n0 + n1 + n2 + n3));\n  };\n\n  root.Perlin = Perlin;\n}(window));\n\n;(function(root) {\n  'use strict';\n\n  var MouseMonitor = function(element) {\n    this.position = new Vector3D(0, 0, 0);\n    this.state    = {left: false, middle: false, right: false};\n    this.element  = element;\n    \n    var that = this;\n    element.addEventListener('mousemove', function(event) {\n      var dot, eventDoc, doc, body, pageX, pageY;\n      event = event || window.event;\n      if (event.pageX == null && event.clientX != null) {\n        eventDoc = (event.target && event.target.ownerDocument) || document;\n        doc = eventDoc.documentElement;\n        body = eventDoc.body;\n        event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n        event.pageY = event.clientY + (doc && doc.scrollTop  || body && body.scrollTop  || 0) - (doc && doc.clientTop  || body && body.clientTop  || 0 );\n      }\n\n      that.position.x = event.pageX;\n      that.position.y = event.pageY;\n    });\n\n    element.addEventListener('contextmenu', function(event) {\n      return event.preventDefault();\n    });\n    \n    element.addEventListener('mousedown', function(event) {\n      if(event.which === 1) that.state.left = true;\n      if(event.which === 2) that.state.middle = true;\n      if(event.which === 3) that.state.right = true;\n      \n      return event.preventDefault();\n    });\n\n    element.addEventListener('mouseup', function(event) {\n      that.state.left = that.state.middle = that.state.right = false;\n      \n      return event.preventDefault();\n    });\n  };\n  \n  root.MouseMonitor = MouseMonitor;\n}(window));\n\n+(function(root) {\n  'use strict';\n  \n  var Particle = function Particle(generator, bounds, rctx, mon) {\n    this.p = new Vector3D(); \/\/ position\n    this.t = new Vector3D(); \/\/ trail to\n    this.v = new Vector3D(); \/\/ velocity\n    this.g = generator; \/\/ simplex noise generator\n    this.b = bounds;    \/\/ window bounds for wrapping\n    this.r = rctx;      \/\/ random context\n    this.m = mon;       \/\/ mouse position monitor\n    \n    this.reset();\n  }, pp = Particle.prototype;\n\n  pp.reset = function() {\n    \/\/ new random position\n    this.p.x = this.t.x = Math.floor(this.r.random() * this.b.x);\n    this.p.y = this.t.y = Math.floor(this.r.random() * this.b.y);\n    \n    \/\/ reset velocity\n    this.v.set(1, 1, 0);\n    \n    \/\/ iteration and life\n    this.i = 0; \n    this.l = this.r.random(1000, 10000); \/\/ life time before particle respawns\n  };\n\n  pp.step = function() {\n    if(this.i++ > this.l) {\n      this.reset();\n    }\n    \n    var xx = (this.p.x \/ 200),\n        yy = (this.p.y \/ 200),\n        zz = (Date.now() \/ 5000),\n        a  = (this.r.random() * Math.Tau),\n        rnd= (this.r.random()  \/ 4);\n\n    \/\/ calculate the new velocity based on the noise\n    \/\/ random velocity in a random direction\n    this.v.x += (rnd * Math.sin(a) + this.g.simplex3d(xx, yy, -zz)); \/\/ sin or cos, no matter\n    this.v.y += (rnd * Math.cos(a) + this.g.simplex3d(xx, yy, zz));  \/\/ opposite zz's matters\n    \n    if(this.m.state.left) {\n      \/\/ add a difference between mouse pos and particle pos (a fraction of it) to the velocity.\n      this.v.add(this.m.position.clone().sub(this.p).mul(.00085));\n    }\n    \n    \/\/ repulse the particles if the right mouse button is down and the distance between\n    \/\/ the mouse and particle is below an arbitrary value between 200 and 250.\n    if(this.m.state.right && this.p.distance(this.m.position) < this.r.random(200, 250)) {\n      this.v.add(this.p.clone().sub(this.m.position).mul(.02));\n    }\n    \n    \/\/ time dilation field, stuff moves at 10% here, depending on distance\n    if(this.m.state.middle) {\n      var d = this.p.distance(this.m.position),\n          l = this.r.random(200, 250);\n      \n      if(d < l) {\n        this.v.mul(d \/ l);\n      }\n    }\n    \n    \/\/ keep a copy of the current position, for a nice line between then and now and add velocity\n    this.p.move(this.t).add(this.v.mul(.94)); \/\/ slow down the velocity slightly\n\n    \/\/ wrap around the edges\n    if(this.p.wrap2d(this.b)) {\n      this.p.move(this.t);\n    }\n  };\n\n  \/\/ plot the line, but do not stroke yet.\n  pp.render = function(context) {\n    context.moveTo(this.t.x, this.t.y);\n    context.lineTo(this.p.x, this.p.y);\n  };\n\n  root.Particle = Particle;\n}(window));\n\nwindow.addEventListener('load', function() {\n  var rctx = new SmallPRNG(+new Date()), \/\/ random generator, see ref\n      p = new Perlin(), \/\/ simplex noise generator\n      canvas = document.getElementById(\"swarm\"),\n      context = canvas.getContext(\"2d\"),\n      stats = new Stats(),\n      monitor = new MouseMonitor(canvas),\n      gui = new dat.GUI(),\n      hue = 0, particles = [], resize,\n      width, height, bounds = new Vector3D(0, 0, 0),\n      settings = {\n        particleNum: 5000,\n        fadeOverlay: true,\n        rotateColor: true,\n        staticColor: {r: 0, g: 75, b: 50},\n        staticColorString: 'rgba(0, 75, 50, 0.55)'\n      };\n\n  stats.setMode(0); \/\/ Start off with FPS mode\n\n  \/\/ Place the statistics at the bottom right.\n  stats.domElement.style.position = 'absolute';\n  stats.domElement.style.right = '5px';\n  stats.domElement.style.bottom = '5px';\n\n  document.body.appendChild(stats.domElement);\n  \n  \/\/ dat.gui stuff, 2 folders with a few properties\n  var f1 = gui.addFolder('Particles'),\n      f2 = gui.addFolder('Colors');\n  \n  f1.add(settings, 'particleNum', 1000, 15000).step(10).name(\"Particles\").onChange(function() {\n    if(settings.particleNum < particles.length) {\n      var toDelete = (particles.length - settings.particleNum);\n      particles.splice(particles.length - toDelete, toDelete);\n    } else {\n      for(var i = particles.length; i < settings.particleNum; i += 1) {\n        particles.push(new Particle(p, bounds, rctx, monitor));\n      }\n    }\n  });\n  \n  f2.add(settings, 'fadeOverlay').name(\"Fade Clear\").onChange(function() {\n    if(settings.fadeOverlay) {\n      resize();\n    }\n  });\n  \n  f2.add(settings, 'rotateColor').name(\"Rotate Color\");\n  f2.addColor(settings, 'staticColor').name(\"Static Color\").onChange(function() {\n    settings.staticColorString = 'rgba(' + \n      Math.floor(settings.staticColor.r) + ', ' + \n      Math.floor(settings.staticColor.g) + ', ' + \n      Math.floor(settings.staticColor.b) + ', ' + .55 + ')';\n  });\n  \n  f1.open();\n  f2.open();\n  gui.close();\n  \n  \/\/ seed perlin with random bytes from SmallPRNG\n  p.init(function() {\n    \/\/ called for each permutation (256 times)\n    return rctx.random(0, 255);\n  });\n\n  resize = function() {\n    \/\/ resize the canvas\n    canvas.width  = width  = bounds.x = window.innerWidth;\n    canvas.height = height = bounds.y = window.innerHeight;\n    \n    \/\/ remove this and see weird gorgeous stuffs, the history of particles.\n    context.fillStyle = '#ffffff';\n    context.fillRect(0, 0, width, height);\n  }; resize();\n\n  window.addEventListener('resize', resize); \n\n  \/\/ generate a few particles\n  for(var i = 0; i < settings.particleNum; i += 1) {\n    particles.push(new Particle(p, bounds, rctx, monitor));\n  }\n  \n  +(function render() {\n    requestAnimFrame(render);\n\n    stats.begin();\n      context.beginPath();\n        \/\/ render each particle and trail\n        for(var i = 0; i < particles.length; i += 1) {\n          particles[i].step(), particles[i].render(context);\n        }\n\n        context.globalCompositeOperation = 'source-over';\n        if(settings.fadeOverlay) {\n          context.fillStyle = 'rgba(0, 0, 0, .085)';\n        } else {\n          context.fillStyle = 'rgba(0, 0, 0, 1)';\n        }\n        context.fillRect(0, 0, width, height);\n\n        context.globalCompositeOperation = 'lighter';\n        if(settings.rotateColor) {\n          context.strokeStyle = 'hsla(' + hue + ', 75%, 50%, .55)';\n        } else {\n          context.strokeStyle = settings.staticColorString;\n        }\n        context.stroke();\n      context.closePath();\n    \n    stats.end();\n    \n    hue = ((hue + .5) % 360);\n  }());\n});\n<\/script>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1c6dc83 elementor-absolute elementor-widget elementor-widget-html\" data-id=\"1c6dc83\" data-element_type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<script>\n\/**\nSmallPRNG library for JavaScript. Not special, \nnot optimized, not perfect. It produces pseudo-\nrandom numbers by manipulating a context which \nwas initialized with a seed. \n\nMIT licensed, use wherever you like, but a link\nback to my CodePen (ImagineProgramming) or website\nis appreciated (http:\/\/www.imagine-programming.com)\n\nBased on:\nhttp:\/\/burtleburtle.net\/bob\/rand\/smallprng.html\n*\/\n\n(function(target, name) {\n\/\/ maximum randval for .random([max\/min [, max]])\nvar RMAX = 0x7FFFFFFF;\n\nvar floor = Math.floor,\nabs = Math.abs;\n\n\/\/ 32-bits rotate\nvar rot = function(x, k) {\nreturn (((x << k) & 0xffffffff) | (x >>> (32 - k)))>>>0;\n};\n\n\/\/ constructor for the context\nvar SmallPRNG = function(seed) {\nthis.a = 0xf1ea5eed;\nthis.b = seed;\nthis.c = seed;\nthis.d = seed;\nthis.s = 0;\n};\n\n\/\/ reseed the context\nSmallPRNG.prototype.seed = function(seed) {\nthis.a = 0xf1ea5eed;\nthis.b = seed;\nthis.c = seed;\nthis.d = seed;\nthis.s = 0;\n};\n\n\/\/ reseed the context b, c and d fields\nSmallPRNG.prototype.seedAll = function(b, c, d) {\nthis.a = 0xf1ea5eed;\nthis.b = b;\nthis.c = c;\nthis.d = d;\nthis.s = 0;\n};\n\n\/\/ get the next randval in the ctx\nSmallPRNG.prototype.randval = function() {\n\/\/ notice the >>>0, which is to get an unsigned integer.\nvar e  = ((this.a - rot(this.b, 27)) & 0xffffffff)>>>0;\nthis.a = ((this.b ^ rot(this.c, 17)) & 0xffffffff)>>>0;\nthis.b = ((this.c + this.d) & 0xffffffff)>>>0;\nthis.c = ((this.d + e) & 0xffffffff)>>>0;\nthis.d = ((e + this.a) & 0xffffffff)>>>0;\nthis.s++;\nreturn this.d;\n};\n\n\/\/ step `times' times in the CTX\nSmallPRNG.prototype.step = function(times) {\ntimes = (typeof(times) === \"number\" ? times : 1);\nif(times === 0) {\ntimes = 1;\n}\n\nfor(var i = 0; i < times; i++) {\nvar e  = ((this.a - rot(this.b, 27)) & 0xffffffff)>>>0;\nthis.a = ((this.b ^ rot(this.c, 17)) & 0xffffffff)>>>0;\nthis.b = ((this.c + this.d) & 0xffffffff)>>>0;\nthis.c = ((this.d + e) & 0xffffffff)>>>0;\nthis.d = ((e + this.a) & 0xffffffff)>>>0;\nthis.s++;\n}\n};\n\nSmallPRNG.prototype.random = function() {\nvar r = ((this.randval() % RMAX) \/ RMAX);\nswitch(arguments.length) {\n\/\/ zero arguments, return the 0-1 random factor\ncase 0: {\nreturn r;\n} break;\n\n\/\/ 1 argument (max val), return random between 1 and max\ncase 1: {\nvar u = arguments[0];\nif(u < 1) {\nconsole.log(\"upper limit invalid\");\nreturn null;\n}\n\nreturn (floor(r * u) + 1);\n\n} break;\n\n\/\/ 2 arguments (min, max val), return random between min and max\ncase 2: {\nvar l = arguments[0];\nvar u = arguments[1];\n\nif(l >= u) {\nconsole.log(\"upper limit invalid\");\nreturn null;\n}\n\nreturn (floor(r * (u - l + 1)) + l);\n} break;\n\ndefault: {\nconsole.log(\"invalid amount of arguments\");\n} break;\n}\n\nreturn null;\n};\n\ntarget[name] = SmallPRNG;\n}(window, \"SmallPRNG\"));\n\n\/*\njQuery was only used to set up a quick\ninterface. Don't be mad :(\n\nThis code is not required, use the lib\nabove if you really really want to use\nthis junk.\n\nmainPen is used to detect the showcase pen,\nfuture pens might refer to this one and they\nshould not execute this code.\n*\/\n\nvar mainPen = document.getElementById(\"main-pen\");\nif(mainPen) {\n$(function() {\nvar rctx = new SmallPRNG(1337);\nvar $seedField = $('input[name=\"seed\"]');\nvar $timeSeed = $('input[name=\"time\"]');\nvar $min = $('input[name=\"min\"]');\nvar $max = $('input[name=\"max\"]');\nvar $rval = $('input[name=\"rval\"]');\nvar $rmax = $('input[name=\"rmax\"]');\nvar $rmm = $('input[name=\"rmm\"]');\nvar $stp = $('#stepper');\n\n$timeSeed.click(function() {\nvar time = (new Date()).getTime();\n$seedField.val(time);\nrctx = new SmallPRNG(+time);\nreturn false;\n});\n\n$seedField.change(function() {\nrctx = new SmallPRNG(+$(this).val());\nreturn false;\n});\n\nvar dumpCTX = function(r) {\nif(r) {\n$(\"#rr\").text(r);\n}\n$(\"#ra\").text(rctx.a);\n$(\"#rb\").text(rctx.b);\n$(\"#rc\").text(rctx.c);\n$(\"#rd\").text(rctx.d);\n$(\"#rs\").text(rctx.s);\n};\n\n$rval.click(function() {\nvar r = rctx.randval();\ndumpCTX(r);\nreturn false;\n});\n\n$rmax.click(function() {\nvar max = +$max.val();\nvar r = rctx.random(max);\ndumpCTX(r);\nreturn false;\n});\n\n$rmm.click(function() {\nvar min = +$min.val();\nvar max = +$max.val();\nvar r = rctx.random(min, max);\ndumpCTX(r);\nreturn false;\n});\n\n$stp.click(function() {\nrctx.step();\ndumpCTX();\nreturn false;\n});\n\n$rval.click();\n});  \n}\n<\/script>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-667778e elementor-absolute elementor-widget elementor-widget-html\" data-id=\"667778e\" data-element_type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<script>\nthis.Element&&Element.prototype.attachEvent&&!Element.prototype.addEventListener&&function(){function t(t,n){Window.prototype[t]=HTMLDocument.prototype[t]=Element.prototype[t]=n}function n(){n.interval&&document.body&&(n.interval=clearInterval(n.interval),document.dispatchEvent(new CustomEvent(\"DOMContentLoaded\")))}t(\"addEventListener\",function(t,n){var e=this,r=e.addEventListener.listeners=e.addEventListener.listeners||{},a=r[t]=r[t]||[];a.length||e.attachEvent(\"on\"+t,a.event=function(t){var n=e.document&&e.document.documentElement||e.documentElement||{scrollLeft:0,scrollTop:0};t.currentTarget=e,t.pageX=t.clientX+n.scrollLeft,t.pageY=t.clientY+n.scrollTop,t.preventDefault=function(){t.returnValue=!1},t.relatedTarget=t.fromElement||null,t.stopImmediatePropagation=function(){u=!1,t.cancelBubble=!0},t.stopPropagation=function(){t.cancelBubble=!0},t.target=t.srcElement||e,t.timeStamp=+new Date;for(var r,o=0,i=[].concat(a),u=!0;u&&(r=i[o]);++o)for(var c,s=0;c=a[s];++s)if(c==r){c.call(e,t);break}}),a.push(n)}),t(\"removeEventListener\",function(t,n){for(var e,r=this,a=r.addEventListener.listeners=r.addEventListener.listeners||{},o=a[t]=a[t]||[],i=o.length-1;e=o[i];--i)if(e==n){o.splice(i,1);break}!o.length&&o.event&&r.detachEvent(\"on\"+t,o.event)}),t(\"dispatchEvent\",function(t){var n=this,e=t.type,r=n.addEventListener.listeners=n.addEventListener.listeners||{},a=r[e]=r[e]||[];try{return n.fireEvent(\"on\"+e,t)}catch(o){return void(a.event&&a.event(t))}}),Object.defineProperty(Window.prototype,\"CustomEvent\",{get:function(){var t=this;return function(n,e){var r,a=t.document.createEventObject();a.type=n;for(r in e)\"cancelable\"==r?a.returnValue=!e.cancelable:\"bubbles\"==r?a.cancelBubble=!e.bubbles:\"detail\"==r&&(a.detail=e.detail);return a}}}),n.interval=setInterval(n,1),window.addEventListener(\"load\",n)}(),!this.CustomEvent&&function(){window.CustomEvent=function(t,n){var e;n=n||{bubbles:!1,cancelable:!1,detail:void 0};try{e=document.createEvent(\"CustomEvent\"),e.initCustomEvent(t,n.bubbles,n.cancelable,n.detail)}catch(r){e=document.createEvent(\"Event\"),e.initEvent(t,n.bubbles,n.cancelable),e.detail=n.detail}return e}}(),function(){\"use strict\";window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3\/60)}}(),\"create\"in Object&&\"function\"==typeof Object.create||(Object.create=function(){var t=function(){};return function(n){if(arguments.length>1)throw Error(\"Second argument not supported\");if(\"object\"!=typeof n)throw TypeError(\"Argument must be an object\");t.prototype=n;var e=new t;return t.prototype=null,e}}())}(),function(){\"use strict\";function t(t,n){return n.prototype=Object.create(t.prototype),n.parent=t,n.prototype.constructor=n,n}\"extend\"in Function.prototype&&\"function\"==typeof Function.prototype.extend||(Function.prototype.extend=function(n){return t(this,n)})}(),function(t){\"use strict\";t.Easing={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.5>t?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return.5>t?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t}}}(window),function(t){\"use strict\";\"Math\"in t||(t.Math={}),\"Util\"in t||(t.Util={});var n=t.Math,e=t.Util;n.Tau=2*n.PI,n.map=function(t,n,e,r,a){return(t-n)*(a-r)\/(e-n)+r},n.dist=function(t,n,e,r){var a=t-e,o=n-r;return Math.sqrt(a*a+o*o)},n.lineIntersect=function(t,n,e,r,a,o,i,u){if(!(that instanceof PointLine))return null;var c,s,l,d,f,m;return c=e-t,s=r-n,l=i-a,d=u-o,f=(-s*(t-a)+c*(n-o))\/(-l*s+c*d),m=(l*(n-o)-d*(t-a))\/(-l*s+c*d),f>=0&&1>=f&&m>=0&&1>=m?{x:Math.floor(t+m*c),y:Math.floor(n+m*s)}:null},n.rad=function(t){return t*(Math.PI\/180)},n.deg=function(t){return t*(180\/Math.PI)},n.pointOnCircle=function(t,e,r,a){var o=t+r*Math.cos(n.rad(a)),i=e+r*Math.sin(n.rad(a));return{x:o,y:i}},n.lineProgress=function(t,n,e,r,a){return{x:t+(e-t)*a,y:n+(r-n)*a}},n.randInt=function(t,n){return Math.floor(Math.random()*(n-t+1))+t},n.mrandInt=function(t){return Math.floor(Math.random()*t)},n.randFloat=function(t,n){return Math.random()*(n-t+1)+t},n.mrandFloat=function(t){return Math.random()*t},n.randSign=function(){return Math.random()>.5?-1:1},n.scale=function(t,n,e,r){var a,o,i;return t>e&&(a=e\/t,o=e,i=a*n),n>r&&(a=r\/n,o=a*t,i=r),{w:Math.floor(o),h:Math.floor(i)}},e.easer=function(t,n,e){var r=Date.now()-n,a=r\/e,o=t(a);return r>=e&&(o=1),o}}(window),function(t){\"use strict\";var n=function(t){return 2!==t.length?t+t:t},e=\/\\#([0-9a-f]{1,2})([0-9a-f]{1,2})([0-9a-f]{1,2})\/i,r=function(t,n,e,r){r=r||1,this.r=t,this.g=n,this.b=e,this.a=r};r.prototype.toString=function(){return\"rgba(\"+this.r+\", \"+this.g+\", \"+this.b+\", \"+this.a+\")\"},r.fromHex=function(t){if(\"string\"!=typeof t)throw new TypeError(\"hexadecimal color must be a string\");if(4!==t.length&&7!==t.length)throw new TypeError(\"invalid hexadecimal format\");var a=new r,o=t.match(e);if(!o)throw new TypeError(\"invalid hexadecimal format\");return a.r=parseInt(n(o[1]),16),a.g=parseInt(n(o[2]),16),a.b=parseInt(n(o[3]),16),a.a=1,a},r.random=function(t,n){return new r(Math.randInt(t,n),Math.randInt(t,n),Math.randInt(t,n),1)},r.randomEx=function(t){return new r(Math.randInt(t.rmin,t.rmax),Math.randInt(t.gmin,t.gmax),Math.randInt(t.bmin,t.bmax),1)};var a=function(t,n,e){this.r=t,this.g=n,this.b=e};a.prototype.toString=function(){return\"rgb(\"+this.r+\", \"+this.g+\", \"+this.b+\")\"},a.fromHex=function(t){if(\"string\"!=typeof t)throw new TypeError(\"hexadecimal color must be a string\");if(4!==t.length&&7!==t.length)throw new TypeError(\"invalid hexadecimal format\");var r=new a,o=t.match(e);if(!o)throw new TypeError(\"invalid hexadecimal format\");return r.r=parseInt(n(o[1]),16),r.g=parseInt(n(o[2]),16),r.b=parseInt(n(o[3]),16),r},a.random=function(t,n){return new a(Math.randInt(t,n),Math.randInt(t,n),Math.randInt(t,n))},a.randomEx=function(t){return new a(Math.randInt(t.rmin,t.rmax),Math.randInt(t.gmin,t.gmax),Math.randInt(t.bmin,t.bmax))},t.RGBA=r,t.RGB=a}(window);\n\/\/# sourceMappingURL=codepen-utilities.min.js.map\n<\/script>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-85a05f5 elementor-absolute elementor-widget elementor-widget-html\" data-id=\"85a05f5\" data-element_type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<script>\n    \/**\n * dat-gui JavaScript Controller Library\n * http:\/\/code.google.com\/p\/dat-gui\n *\n * Copyright 2011 Data Arts Team, Google Creative Lab\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http:\/\/www.apache.org\/licenses\/LICENSE-2.0\n *\/\nvar dat=dat||{};dat.gui=dat.gui||{};dat.utils=dat.utils||{};dat.controllers=dat.controllers||{};dat.dom=dat.dom||{};dat.color=dat.color||{};dat.utils.css=function(){return{load:function(f,a){a=a||document;var d=a.createElement(\"link\");d.type=\"text\/css\";d.rel=\"stylesheet\";d.href=f;a.getElementsByTagName(\"head\")[0].appendChild(d)},inject:function(f,a){a=a||document;var d=document.createElement(\"style\");d.type=\"text\/css\";d.innerHTML=f;a.getElementsByTagName(\"head\")[0].appendChild(d)}}}();\ndat.utils.common=function(){var f=Array.prototype.forEach,a=Array.prototype.slice;return{BREAK:{},extend:function(d){this.each(a.call(arguments,1),function(a){for(var c in a)this.isUndefined(a[c])||(d[c]=a[c])},this);return d},defaults:function(d){this.each(a.call(arguments,1),function(a){for(var c in a)this.isUndefined(d[c])&&(d[c]=a[c])},this);return d},compose:function(){var d=a.call(arguments);return function(){for(var e=a.call(arguments),c=d.length-1;0<=c;c--)e=[d[c].apply(this,e)];return e[0]}},\neach:function(a,e,c){if(a)if(f&&a.forEach&&a.forEach===f)a.forEach(e,c);else if(a.length===a.length+0)for(var b=0,p=a.length;b<p&&!(b in a&&e.call(c,a[b],b)===this.BREAK);b++);else for(b in a)if(e.call(c,a[b],b)===this.BREAK)break},defer:function(a){setTimeout(a,0)},toArray:function(d){return d.toArray?d.toArray():a.call(d)},isUndefined:function(a){return void 0===a},isNull:function(a){return null===a},isNaN:function(a){return a!==a},isArray:Array.isArray||function(a){return a.constructor===Array},\nisObject:function(a){return a===Object(a)},isNumber:function(a){return a===a+0},isString:function(a){return a===a+\"\"},isBoolean:function(a){return!1===a||!0===a},isFunction:function(a){return\"[object Function]\"===Object.prototype.toString.call(a)}}}();\ndat.controllers.Controller=function(f){var a=function(a,e){this.initialValue=a[e];this.domElement=document.createElement(\"div\");this.object=a;this.property=e;this.__onFinishChange=this.__onChange=void 0};f.extend(a.prototype,{onChange:function(a){this.__onChange=a;return this},onFinishChange:function(a){this.__onFinishChange=a;return this},setValue:function(a){this.object[this.property]=a;this.__onChange&&this.__onChange.call(this,a);this.updateDisplay();return this},getValue:function(){return this.object[this.property]},\nupdateDisplay:function(){return this},isModified:function(){return this.initialValue!==this.getValue()}});return a}(dat.utils.common);\ndat.dom.dom=function(f){function a(b){if(\"0\"===b||f.isUndefined(b))return 0;b=b.match(e);return f.isNull(b)?0:parseFloat(b[1])}var d={};f.each({HTMLEvents:[\"change\"],MouseEvents:[\"click\",\"mousemove\",\"mousedown\",\"mouseup\",\"mouseover\"],KeyboardEvents:[\"keydown\"]},function(b,a){f.each(b,function(b){d[b]=a})});var e=\/(\\d+(\\.\\d+)?)px\/,c={makeSelectable:function(b,a){void 0!==b&&void 0!==b.style&&(b.onselectstart=a?function(){return!1}:function(){},b.style.MozUserSelect=a?\"auto\":\"none\",b.style.KhtmlUserSelect=\na?\"auto\":\"none\",b.unselectable=a?\"on\":\"off\")},makeFullscreen:function(b,a,c){f.isUndefined(a)&&(a=!0);f.isUndefined(c)&&(c=!0);b.style.position=\"absolute\";a&&(b.style.left=0,b.style.right=0);c&&(b.style.top=0,b.style.bottom=0)},fakeEvent:function(b,a,c,e){c=c||{};var r=d[a];if(!r)throw Error(\"Event type \"+a+\" not supported.\");var n=document.createEvent(r);switch(r){case \"MouseEvents\":n.initMouseEvent(a,c.bubbles||!1,c.cancelable||!0,window,c.clickCount||1,0,0,c.x||c.clientX||0,c.y||c.clientY||0,!1,\n!1,!1,!1,0,null);break;case \"KeyboardEvents\":r=n.initKeyboardEvent||n.initKeyEvent;f.defaults(c,{cancelable:!0,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1,keyCode:void 0,charCode:void 0});r(a,c.bubbles||!1,c.cancelable,window,c.ctrlKey,c.altKey,c.shiftKey,c.metaKey,c.keyCode,c.charCode);break;default:n.initEvent(a,c.bubbles||!1,c.cancelable||!0)}f.defaults(n,e);b.dispatchEvent(n)},bind:function(a,e,d,f){a.addEventListener?a.addEventListener(e,d,f||!1):a.attachEvent&&a.attachEvent(\"on\"+e,d);return c},\nunbind:function(a,e,d,f){a.removeEventListener?a.removeEventListener(e,d,f||!1):a.detachEvent&&a.detachEvent(\"on\"+e,d);return c},addClass:function(a,e){if(void 0===a.className)a.className=e;else if(a.className!==e){var d=a.className.split(\/ +\/);-1==d.indexOf(e)&&(d.push(e),a.className=d.join(\" \").replace(\/^\\s+\/,\"\").replace(\/\\s+$\/,\"\"))}return c},removeClass:function(a,e){if(e){if(void 0!==a.className)if(a.className===e)a.removeAttribute(\"class\");else{var d=a.className.split(\/ +\/),f=d.indexOf(e);-1!=\nf&&(d.splice(f,1),a.className=d.join(\" \"))}}else a.className=void 0;return c},hasClass:function(a,c){return(new RegExp(\"(?:^|\\\\s+)\"+c+\"(?:\\\\s+|$)\")).test(a.className)||!1},getWidth:function(b){b=getComputedStyle(b);return a(b[\"border-left-width\"])+a(b[\"border-right-width\"])+a(b[\"padding-left\"])+a(b[\"padding-right\"])+a(b.width)},getHeight:function(b){b=getComputedStyle(b);return a(b[\"border-top-width\"])+a(b[\"border-bottom-width\"])+a(b[\"padding-top\"])+a(b[\"padding-bottom\"])+a(b.height)},getOffset:function(a){var c=\n{left:0,top:0};if(a.offsetParent){do c.left+=a.offsetLeft,c.top+=a.offsetTop;while(a=a.offsetParent)}return c},isActive:function(a){return a===document.activeElement&&(a.type||a.href)}};return c}(dat.utils.common);\ndat.controllers.OptionController=function(f,a,d){var e=function(c,b,f){e.superclass.call(this,c,b);var q=this;this.__select=document.createElement(\"select\");if(d.isArray(f)){var l={};d.each(f,function(a){l[a]=a});f=l}d.each(f,function(a,b){var c=document.createElement(\"option\");c.innerHTML=b;c.setAttribute(\"value\",a);q.__select.appendChild(c)});this.updateDisplay();a.bind(this.__select,\"change\",function(){q.setValue(this.options[this.selectedIndex].value)});this.domElement.appendChild(this.__select)};\ne.superclass=f;d.extend(e.prototype,f.prototype,{setValue:function(a){a=e.superclass.prototype.setValue.call(this,a);this.__onFinishChange&&this.__onFinishChange.call(this,this.getValue());return a},updateDisplay:function(){this.__select.value=this.getValue();return e.superclass.prototype.updateDisplay.call(this)}});return e}(dat.controllers.Controller,dat.dom.dom,dat.utils.common);\ndat.controllers.NumberController=function(f,a){function d(a){a=a.toString();return-1<a.indexOf(\".\")?a.length-a.indexOf(\".\")-1:0}var e=function(c,b,f){e.superclass.call(this,c,b);f=f||{};this.__min=f.min;this.__max=f.max;this.__step=f.step;a.isUndefined(this.__step)?this.__impliedStep=0==this.initialValue?1:Math.pow(10,Math.floor(Math.log(this.initialValue)\/Math.LN10))\/10:this.__impliedStep=this.__step;this.__precision=d(this.__impliedStep)};e.superclass=f;a.extend(e.prototype,f.prototype,{setValue:function(a){void 0!==\nthis.__min&&a<this.__min?a=this.__min:void 0!==this.__max&&a>this.__max&&(a=this.__max);void 0!==this.__step&&0!=a%this.__step&&(a=Math.round(a\/this.__step)*this.__step);return e.superclass.prototype.setValue.call(this,a)},min:function(a){this.__min=a;return this},max:function(a){this.__max=a;return this},step:function(a){this.__impliedStep=this.__step=a;this.__precision=d(a);return this}});return e}(dat.controllers.Controller,dat.utils.common);\ndat.controllers.NumberControllerBox=function(f,a,d){var e=function(c,b,f){function q(){var a=parseFloat(n.__input.value);d.isNaN(a)||n.setValue(a)}function l(a){var b=u-a.clientY;n.setValue(n.getValue()+b*n.__impliedStep);u=a.clientY}function r(){a.unbind(window,\"mousemove\",l);a.unbind(window,\"mouseup\",r)}this.__truncationSuspended=!1;e.superclass.call(this,c,b,f);var n=this,u;this.__input=document.createElement(\"input\");this.__input.setAttribute(\"type\",\"text\");a.bind(this.__input,\"change\",q);a.bind(this.__input,\n\"blur\",function(){q();n.__onFinishChange&&n.__onFinishChange.call(n,n.getValue())});a.bind(this.__input,\"mousedown\",function(b){a.bind(window,\"mousemove\",l);a.bind(window,\"mouseup\",r);u=b.clientY});a.bind(this.__input,\"keydown\",function(a){13===a.keyCode&&(n.__truncationSuspended=!0,this.blur(),n.__truncationSuspended=!1)});this.updateDisplay();this.domElement.appendChild(this.__input)};e.superclass=f;d.extend(e.prototype,f.prototype,{updateDisplay:function(){var a=this.__input,b;if(this.__truncationSuspended)b=\nthis.getValue();else{b=this.getValue();var d=Math.pow(10,this.__precision);b=Math.round(b*d)\/d}a.value=b;return e.superclass.prototype.updateDisplay.call(this)}});return e}(dat.controllers.NumberController,dat.dom.dom,dat.utils.common);\ndat.controllers.NumberControllerSlider=function(f,a,d,e,c){function b(a,b,c,e,d){return e+(a-b)\/(c-b)*(d-e)}var p=function(c,e,d,f,u){function A(c){c.preventDefault();var e=a.getOffset(k.__background),d=a.getWidth(k.__background);k.setValue(b(c.clientX,e.left,e.left+d,k.__min,k.__max));return!1}function g(){a.unbind(window,\"mousemove\",A);a.unbind(window,\"mouseup\",g);k.__onFinishChange&&k.__onFinishChange.call(k,k.getValue())}p.superclass.call(this,c,e,{min:d,max:f,step:u});var k=this;this.__background=\ndocument.createElement(\"div\");this.__foreground=document.createElement(\"div\");a.bind(this.__background,\"mousedown\",function(b){a.bind(window,\"mousemove\",A);a.bind(window,\"mouseup\",g);A(b)});a.addClass(this.__background,\"slider\");a.addClass(this.__foreground,\"slider-fg\");this.updateDisplay();this.__background.appendChild(this.__foreground);this.domElement.appendChild(this.__background)};p.superclass=f;p.useDefaultStyles=function(){d.inject(c)};e.extend(p.prototype,f.prototype,{updateDisplay:function(){var a=\n(this.getValue()-this.__min)\/(this.__max-this.__min);this.__foreground.style.width=100*a+\"%\";return p.superclass.prototype.updateDisplay.call(this)}});return p}(dat.controllers.NumberController,dat.dom.dom,dat.utils.css,dat.utils.common,\"\/**\\n * dat-gui JavaScript Controller Library\\n * http:\/\/code.google.com\/p\/dat-gui\\n *\\n * Copyright 2011 Data Arts Team, Google Creative Lab\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n * http:\/\/www.apache.org\/licenses\/LICENSE-2.0\\n *\/\\n\\n.slider {\\n  box-shadow: inset 0 2px 4px rgba(0,0,0,0.15);\\n  height: 1em;\\n  border-radius: 1em;\\n  background-color: #eee;\\n  padding: 0 0.5em;\\n  overflow: hidden;\\n}\\n\\n.slider-fg {\\n  padding: 1px 0 2px 0;\\n  background-color: #aaa;\\n  height: 1em;\\n  margin-left: -0.5em;\\n  padding-right: 0.5em;\\n  border-radius: 1em 0 0 1em;\\n}\\n\\n.slider-fg:after {\\n  display: inline-block;\\n  border-radius: 1em;\\n  background-color: #fff;\\n  border:  1px solid #aaa;\\n  content: '';\\n  float: right;\\n  margin-right: -1em;\\n  margin-top: -1px;\\n  height: 0.9em;\\n  width: 0.9em;\\n}\");\ndat.controllers.FunctionController=function(f,a,d){var e=function(c,b,d){e.superclass.call(this,c,b);var f=this;this.__button=document.createElement(\"div\");this.__button.innerHTML=void 0===d?\"Fire\":d;a.bind(this.__button,\"click\",function(a){a.preventDefault();f.fire();return!1});a.addClass(this.__button,\"button\");this.domElement.appendChild(this.__button)};e.superclass=f;d.extend(e.prototype,f.prototype,{fire:function(){this.__onChange&&this.__onChange.call(this);this.getValue().call(this.object);\nthis.__onFinishChange&&this.__onFinishChange.call(this,this.getValue())}});return e}(dat.controllers.Controller,dat.dom.dom,dat.utils.common);\ndat.controllers.BooleanController=function(f,a,d){var e=function(c,b){e.superclass.call(this,c,b);var d=this;this.__prev=this.getValue();this.__checkbox=document.createElement(\"input\");this.__checkbox.setAttribute(\"type\",\"checkbox\");a.bind(this.__checkbox,\"change\",function(){d.setValue(!d.__prev)},!1);this.domElement.appendChild(this.__checkbox);this.updateDisplay()};e.superclass=f;d.extend(e.prototype,f.prototype,{setValue:function(a){a=e.superclass.prototype.setValue.call(this,a);this.__onFinishChange&&\nthis.__onFinishChange.call(this,this.getValue());this.__prev=this.getValue();return a},updateDisplay:function(){!0===this.getValue()?(this.__checkbox.setAttribute(\"checked\",\"checked\"),this.__checkbox.checked=!0):this.__checkbox.checked=!1;return e.superclass.prototype.updateDisplay.call(this)}});return e}(dat.controllers.Controller,dat.dom.dom,dat.utils.common);\ndat.color.toString=function(f){return function(a){if(1==a.a||f.isUndefined(a.a)){for(a=a.hex.toString(16);6>a.length;)a=\"0\"+a;return\"#\"+a}return\"rgba(\"+Math.round(a.r)+\",\"+Math.round(a.g)+\",\"+Math.round(a.b)+\",\"+a.a+\")\"}}(dat.utils.common);\ndat.color.interpret=function(f,a){var d,e,c=[{litmus:a.isString,conversions:{THREE_CHAR_HEX:{read:function(a){a=a.match(\/^#([A-F0-9])([A-F0-9])([A-F0-9])$\/i);return null===a?!1:{space:\"HEX\",hex:parseInt(\"0x\"+a[1].toString()+a[1].toString()+a[2].toString()+a[2].toString()+a[3].toString()+a[3].toString())}},write:f},SIX_CHAR_HEX:{read:function(a){a=a.match(\/^#([A-F0-9]{6})$\/i);return null===a?!1:{space:\"HEX\",hex:parseInt(\"0x\"+a[1].toString())}},write:f},CSS_RGB:{read:function(a){a=a.match(\/^rgb\\(\\s*(.+)\\s*,\\s*(.+)\\s*,\\s*(.+)\\s*\\)\/);\nreturn null===a?!1:{space:\"RGB\",r:parseFloat(a[1]),g:parseFloat(a[2]),b:parseFloat(a[3])}},write:f},CSS_RGBA:{read:function(a){a=a.match(\/^rgba\\(\\s*(.+)\\s*,\\s*(.+)\\s*,\\s*(.+)\\s*\\,\\s*(.+)\\s*\\)\/);return null===a?!1:{space:\"RGB\",r:parseFloat(a[1]),g:parseFloat(a[2]),b:parseFloat(a[3]),a:parseFloat(a[4])}},write:f}}},{litmus:a.isNumber,conversions:{HEX:{read:function(a){return{space:\"HEX\",hex:a,conversionName:\"HEX\"}},write:function(a){return a.hex}}}},{litmus:a.isArray,conversions:{RGB_ARRAY:{read:function(a){return 3!=\na.length?!1:{space:\"RGB\",r:a[0],g:a[1],b:a[2]}},write:function(a){return[a.r,a.g,a.b]}},RGBA_ARRAY:{read:function(a){return 4!=a.length?!1:{space:\"RGB\",r:a[0],g:a[1],b:a[2],a:a[3]}},write:function(a){return[a.r,a.g,a.b,a.a]}}}},{litmus:a.isObject,conversions:{RGBA_OBJ:{read:function(b){return a.isNumber(b.r)&&a.isNumber(b.g)&&a.isNumber(b.b)&&a.isNumber(b.a)?{space:\"RGB\",r:b.r,g:b.g,b:b.b,a:b.a}:!1},write:function(a){return{r:a.r,g:a.g,b:a.b,a:a.a}}},RGB_OBJ:{read:function(b){return a.isNumber(b.r)&&\na.isNumber(b.g)&&a.isNumber(b.b)?{space:\"RGB\",r:b.r,g:b.g,b:b.b}:!1},write:function(a){return{r:a.r,g:a.g,b:a.b}}},HSVA_OBJ:{read:function(b){return a.isNumber(b.h)&&a.isNumber(b.s)&&a.isNumber(b.v)&&a.isNumber(b.a)?{space:\"HSV\",h:b.h,s:b.s,v:b.v,a:b.a}:!1},write:function(a){return{h:a.h,s:a.s,v:a.v,a:a.a}}},HSV_OBJ:{read:function(b){return a.isNumber(b.h)&&a.isNumber(b.s)&&a.isNumber(b.v)?{space:\"HSV\",h:b.h,s:b.s,v:b.v}:!1},write:function(a){return{h:a.h,s:a.s,v:a.v}}}}}];return function(){e=!1;\nvar b=1<arguments.length?a.toArray(arguments):arguments[0];a.each(c,function(c){if(c.litmus(b))return a.each(c.conversions,function(c,f){d=c.read(b);if(!1===e&&!1!==d)return e=d,d.conversionName=f,d.conversion=c,a.BREAK}),a.BREAK});return e}}(dat.color.toString,dat.utils.common);\ndat.GUI=dat.gui.GUI=function(f,a,d,e,c,b,p,q,l,r,n,u,A,g,k){function v(a,b,h,d){if(void 0===b[h])throw Error(\"Object \"+b+' has no property \"'+h+'\"');d.color?b=new n(b,h):(b=[b,h].concat(d.factoryArgs),b=e.apply(a,b));d.before instanceof c&&(d.before=d.before.__li);y(a,b);g.addClass(b.domElement,\"c\");h=document.createElement(\"span\");g.addClass(h,\"property-name\");h.innerHTML=b.property;var f=document.createElement(\"div\");f.appendChild(h);f.appendChild(b.domElement);d=w(a,f,d.before);g.addClass(d,m.CLASS_CONTROLLER_ROW);\ng.addClass(d,typeof b.getValue());t(a,d,b);a.__controllers.push(b);return b}function w(a,b,h){var c=document.createElement(\"li\");b&&c.appendChild(b);h?a.__ul.insertBefore(c,params.before):a.__ul.appendChild(c);a.onResize();return c}function t(a,c,h){h.__li=c;h.__gui=a;k.extend(h,{options:function(b){if(1<arguments.length)return h.remove(),v(a,h.object,h.property,{before:h.__li.nextElementSibling,factoryArgs:[k.toArray(arguments)]});if(k.isArray(b)||k.isObject(b))return h.remove(),v(a,h.object,h.property,\n{before:h.__li.nextElementSibling,factoryArgs:[b]})},name:function(a){h.__li.firstElementChild.firstElementChild.innerHTML=a;return h},listen:function(){h.__gui.listen(h);return h},remove:function(){h.__gui.remove(h);return h}});if(h instanceof l){var d=new q(h.object,h.property,{min:h.__min,max:h.__max,step:h.__step});k.each([\"updateDisplay\",\"onChange\",\"onFinishChange\"],function(a){var K=h[a],b=d[a];h[a]=d[a]=function(){var a=Array.prototype.slice.call(arguments);K.apply(h,a);return b.apply(d,a)}});\ng.addClass(c,\"has-slider\");h.domElement.insertBefore(d.domElement,h.domElement.firstElementChild)}else if(h instanceof q){var e=function(b){return k.isNumber(h.__min)&&k.isNumber(h.__max)?(h.remove(),v(a,h.object,h.property,{before:h.__li.nextElementSibling,factoryArgs:[h.__min,h.__max,h.__step]})):b};h.min=k.compose(e,h.min);h.max=k.compose(e,h.max)}else h instanceof b?(g.bind(c,\"click\",function(){g.fakeEvent(h.__checkbox,\"click\")}),g.bind(h.__checkbox,\"click\",function(a){a.stopPropagation()})):\nh instanceof p?(g.bind(c,\"click\",function(){g.fakeEvent(h.__button,\"click\")}),g.bind(c,\"mouseover\",function(){g.addClass(h.__button,\"hover\")}),g.bind(c,\"mouseout\",function(){g.removeClass(h.__button,\"hover\")})):h instanceof n&&(g.addClass(c,\"color\"),h.updateDisplay=k.compose(function(a){c.style.borderLeftColor=h.__color.toString();return a},h.updateDisplay),h.updateDisplay());h.setValue=k.compose(function(b){a.getRoot().__preset_select&&h.isModified()&&E(a.getRoot(),!0);return b},h.setValue)}function y(a,\nb){var c=a.getRoot(),d=c.__rememberedObjects.indexOf(b.object);if(-1!=d){var e=c.__rememberedObjectIndecesToControllers[d];void 0===e&&(e={},c.__rememberedObjectIndecesToControllers[d]=e);e[b.property]=b;if(c.load&&c.load.remembered){c=c.load.remembered;if(c[a.preset])c=c[a.preset];else if(c.Default)c=c.Default;else return;c[d]&&void 0!==c[d][b.property]&&(d=c[d][b.property],b.initialValue=d,b.setValue(d))}}}function L(a){var b=a.__save_row=document.createElement(\"li\");g.addClass(a.domElement,\"has-save\");\na.__ul.insertBefore(b,a.__ul.firstChild);g.addClass(b,\"save-row\");var c=document.createElement(\"span\");c.innerHTML=\"&nbsp;\";g.addClass(c,\"button gears\");var d=document.createElement(\"span\");d.innerHTML=\"Save\";g.addClass(d,\"button\");g.addClass(d,\"save\");var e=document.createElement(\"span\");e.innerHTML=\"New\";g.addClass(e,\"button\");g.addClass(e,\"save-as\");var f=document.createElement(\"span\");f.innerHTML=\"Revert\";g.addClass(f,\"button\");g.addClass(f,\"revert\");var r=a.__preset_select=document.createElement(\"select\");\na.load&&a.load.remembered?k.each(a.load.remembered,function(b,c){F(a,c,c==a.preset)}):F(a,\"Default\",!1);g.bind(r,\"change\",function(){for(var b=0;b<a.__preset_select.length;b++)a.__preset_select[b].innerHTML=a.__preset_select[b].value;a.preset=this.value});b.appendChild(r);b.appendChild(c);b.appendChild(d);b.appendChild(e);b.appendChild(f);if(x){var n=function(){u.style.display=a.useLocalStorage?\"block\":\"none\"},b=document.getElementById(\"dg-save-locally\"),u=document.getElementById(\"dg-local-explain\");\nb.style.display=\"block\";b=document.getElementById(\"dg-local-storage\");\"true\"===localStorage.getItem(document.location.href+\".isLocal\")&&b.setAttribute(\"checked\",\"checked\");n();g.bind(b,\"change\",function(){a.useLocalStorage=!a.useLocalStorage;n()})}var m=document.getElementById(\"dg-new-constructor\");g.bind(m,\"keydown\",function(a){!a.metaKey||67!==a.which&&67!=a.keyCode||B.hide()});g.bind(c,\"click\",function(){m.innerHTML=JSON.stringify(a.getSaveObject(),void 0,2);B.show();m.focus();m.select()});g.bind(d,\n\"click\",function(){a.save()});g.bind(e,\"click\",function(){var b=prompt(\"Enter a new preset name.\");b&&a.saveAs(b)});g.bind(f,\"click\",function(){a.revert()})}function M(a){function b(f){f.preventDefault();e=f.clientX;g.addClass(a.__closeButton,m.CLASS_DRAG);g.bind(window,\"mousemove\",c);g.bind(window,\"mouseup\",d);return!1}function c(b){b.preventDefault();a.width+=e-b.clientX;a.onResize();e=b.clientX;return!1}function d(){g.removeClass(a.__closeButton,m.CLASS_DRAG);g.unbind(window,\"mousemove\",c);g.unbind(window,\n\"mouseup\",d)}a.__resize_handle=document.createElement(\"div\");k.extend(a.__resize_handle.style,{width:\"6px\",marginLeft:\"-3px\",height:\"200px\",cursor:\"ew-resize\",position:\"absolute\"});var e;g.bind(a.__resize_handle,\"mousedown\",b);g.bind(a.__closeButton,\"mousedown\",b);a.domElement.insertBefore(a.__resize_handle,a.domElement.firstElementChild)}function G(a,b){a.domElement.style.width=b+\"px\";a.__save_row&&a.autoPlace&&(a.__save_row.style.width=b+\"px\");a.__closeButton&&(a.__closeButton.style.width=b+\"px\")}\nfunction C(a,b){var c={};k.each(a.__rememberedObjects,function(d,e){var f={};k.each(a.__rememberedObjectIndecesToControllers[e],function(a,c){f[c]=b?a.initialValue:a.getValue()});c[e]=f});return c}function F(a,b,c){var d=document.createElement(\"option\");d.innerHTML=b;d.value=b;a.__preset_select.appendChild(d);c&&(a.__preset_select.selectedIndex=a.__preset_select.length-1)}function E(a,b){var c=a.__preset_select[a.__preset_select.selectedIndex];c.innerHTML=b?c.value+\"*\":c.value}function H(a){0!=a.length&&\nu(function(){H(a)});k.each(a,function(a){a.updateDisplay()})}f.inject(d);var x;try{x=\"localStorage\"in window&&null!==window.localStorage}catch(N){x=!1}var B,I=!0,z,D=!1,J=[],m=function(a){function b(){var a=c.getRoot();a.width+=1;k.defer(function(){--a.width})}var c=this;this.domElement=document.createElement(\"div\");this.__ul=document.createElement(\"ul\");this.domElement.appendChild(this.__ul);g.addClass(this.domElement,\"dg\");this.__folders={};this.__controllers=[];this.__rememberedObjects=[];this.__rememberedObjectIndecesToControllers=\n[];this.__listening=[];a=a||{};a=k.defaults(a,{autoPlace:!0,width:m.DEFAULT_WIDTH});a=k.defaults(a,{resizable:a.autoPlace,hideable:a.autoPlace});k.isUndefined(a.load)?a.load={preset:\"Default\"}:a.preset&&(a.load.preset=a.preset);k.isUndefined(a.parent)&&a.hideable&&J.push(this);a.resizable=k.isUndefined(a.parent)&&a.resizable;a.autoPlace&&k.isUndefined(a.scrollable)&&(a.scrollable=!0);var d=x&&\"true\"===localStorage.getItem(document.location.href+\".isLocal\"),e;Object.defineProperties(this,{parent:{get:function(){return a.parent}},\nscrollable:{get:function(){return a.scrollable}},autoPlace:{get:function(){return a.autoPlace}},preset:{get:function(){return c.parent?c.getRoot().preset:a.load.preset},set:function(b){c.parent?c.getRoot().preset=b:a.load.preset=b;for(b=0;b<this.__preset_select.length;b++)this.__preset_select[b].value==this.preset&&(this.__preset_select.selectedIndex=b);c.revert()}},width:{get:function(){return a.width},set:function(b){a.width=b;G(c,b)}},name:{get:function(){return a.name},set:function(b){a.name=\nb;r&&(r.innerHTML=a.name)}},closed:{get:function(){return a.closed},set:function(b){a.closed=b;a.closed?g.addClass(c.__ul,m.CLASS_CLOSED):g.removeClass(c.__ul,m.CLASS_CLOSED);this.onResize();c.__closeButton&&(c.__closeButton.innerHTML=b?m.TEXT_OPEN:m.TEXT_CLOSED)}},load:{get:function(){return a.load}},useLocalStorage:{get:function(){return d},set:function(a){x&&((d=a)?g.bind(window,\"unload\",e):g.unbind(window,\"unload\",e),localStorage.setItem(document.location.href+\".isLocal\",a))}}});if(k.isUndefined(a.parent)){a.closed=\n!1;g.addClass(this.domElement,m.CLASS_MAIN);g.makeSelectable(this.domElement,!1);if(x&&d){c.useLocalStorage=!0;var f=localStorage.getItem(document.location.href+\".gui\");f&&(a.load=JSON.parse(f))}this.__closeButton=document.createElement(\"div\");this.__closeButton.innerHTML=m.TEXT_CLOSED;g.addClass(this.__closeButton,m.CLASS_CLOSE_BUTTON);this.domElement.appendChild(this.__closeButton);g.bind(this.__closeButton,\"click\",function(){c.closed=!c.closed})}else{void 0===a.closed&&(a.closed=!0);var r=document.createTextNode(a.name);\ng.addClass(r,\"controller-name\");f=w(c,r);g.addClass(this.__ul,m.CLASS_CLOSED);g.addClass(f,\"title\");g.bind(f,\"click\",function(a){a.preventDefault();c.closed=!c.closed;return!1});a.closed||(this.closed=!1)}a.autoPlace&&(k.isUndefined(a.parent)&&(I&&(z=document.createElement(\"div\"),g.addClass(z,\"dg\"),g.addClass(z,m.CLASS_AUTO_PLACE_CONTAINER),document.body.appendChild(z),I=!1),z.appendChild(this.domElement),g.addClass(this.domElement,m.CLASS_AUTO_PLACE)),this.parent||G(c,a.width));g.bind(window,\"resize\",\nfunction(){c.onResize()});g.bind(this.__ul,\"webkitTransitionEnd\",function(){c.onResize()});g.bind(this.__ul,\"transitionend\",function(){c.onResize()});g.bind(this.__ul,\"oTransitionEnd\",function(){c.onResize()});this.onResize();a.resizable&&M(this);this.saveToLocalStorageIfPossible=e=function(){x&&\"true\"===localStorage.getItem(document.location.href+\".isLocal\")&&localStorage.setItem(document.location.href+\".gui\",JSON.stringify(c.getSaveObject()))};c.getRoot();a.parent||b()};m.toggleHide=function(){D=\n!D;k.each(J,function(a){a.domElement.style.zIndex=D?-999:999;a.domElement.style.opacity=D?0:1})};m.CLASS_AUTO_PLACE=\"a\";m.CLASS_AUTO_PLACE_CONTAINER=\"ac\";m.CLASS_MAIN=\"main\";m.CLASS_CONTROLLER_ROW=\"cr\";m.CLASS_TOO_TALL=\"taller-than-window\";m.CLASS_CLOSED=\"closed\";m.CLASS_CLOSE_BUTTON=\"close-button\";m.CLASS_DRAG=\"drag\";m.DEFAULT_WIDTH=245;m.TEXT_CLOSED=\"Close Controls\";m.TEXT_OPEN=\"Open Controls\";g.bind(window,\"keydown\",function(a){\"text\"===document.activeElement.type||72!==a.which&&72!=a.keyCode||\nm.toggleHide()},!1);k.extend(m.prototype,{add:function(a,b){return v(this,a,b,{factoryArgs:Array.prototype.slice.call(arguments,2)})},addColor:function(a,b){return v(this,a,b,{color:!0})},remove:function(a){this.__ul.removeChild(a.__li);this.__controllers.splice(this.__controllers.indexOf(a),1);var b=this;k.defer(function(){b.onResize()})},destroy:function(){this.autoPlace&&z.removeChild(this.domElement)},addFolder:function(a){if(void 0!==this.__folders[a])throw Error('You already have a folder in this GUI by the name \"'+\na+'\"');var b={name:a,parent:this};b.autoPlace=this.autoPlace;this.load&&this.load.folders&&this.load.folders[a]&&(b.closed=this.load.folders[a].closed,b.load=this.load.folders[a]);b=new m(b);this.__folders[a]=b;a=w(this,b.domElement);g.addClass(a,\"folder\");return b},open:function(){this.closed=!1},close:function(){this.closed=!0},onResize:function(){var a=this.getRoot();if(a.scrollable){var b=g.getOffset(a.__ul).top,c=0;k.each(a.__ul.childNodes,function(b){a.autoPlace&&b===a.__save_row||(c+=g.getHeight(b))});\nwindow.innerHeight-b-20<c?(g.addClass(a.domElement,m.CLASS_TOO_TALL),a.__ul.style.height=window.innerHeight-b-20+\"px\"):(g.removeClass(a.domElement,m.CLASS_TOO_TALL),a.__ul.style.height=\"auto\")}a.__resize_handle&&k.defer(function(){a.__resize_handle.style.height=a.__ul.offsetHeight+\"px\"});a.__closeButton&&(a.__closeButton.style.width=a.width+\"px\")},remember:function(){k.isUndefined(B)&&(B=new A,B.domElement.innerHTML=a);if(this.parent)throw Error(\"You can only call remember on a top level GUI.\");var b=\nthis;k.each(Array.prototype.slice.call(arguments),function(a){0==b.__rememberedObjects.length&&L(b);-1==b.__rememberedObjects.indexOf(a)&&b.__rememberedObjects.push(a)});this.autoPlace&&G(this,this.width)},getRoot:function(){for(var a=this;a.parent;)a=a.parent;return a},getSaveObject:function(){var a=this.load;a.closed=this.closed;0<this.__rememberedObjects.length&&(a.preset=this.preset,a.remembered||(a.remembered={}),a.remembered[this.preset]=C(this));a.folders={};k.each(this.__folders,function(b,\nc){a.folders[c]=b.getSaveObject()});return a},save:function(){this.load.remembered||(this.load.remembered={});this.load.remembered[this.preset]=C(this);E(this,!1);this.saveToLocalStorageIfPossible()},saveAs:function(a){this.load.remembered||(this.load.remembered={},this.load.remembered.Default=C(this,!0));this.load.remembered[a]=C(this);this.preset=a;F(this,a,!0);this.saveToLocalStorageIfPossible()},revert:function(a){k.each(this.__controllers,function(b){this.getRoot().load.remembered?y(a||this.getRoot(),\nb):b.setValue(b.initialValue)},this);k.each(this.__folders,function(a){a.revert(a)});a||E(this.getRoot(),!1)},listen:function(a){var b=0==this.__listening.length;this.__listening.push(a);b&&H(this.__listening)}});return m}(dat.utils.css,'<div id=\"dg-save\" class=\"dg dialogue\">\\n\\n  Here\\'s the new load parameter for your <code>GUI<\/code>\\'s constructor:\\n\\n  <textarea id=\"dg-new-constructor\"><\/textarea>\\n\\n  <div id=\"dg-save-locally\">\\n\\n    <input id=\"dg-local-storage\" type=\"checkbox\"\/> Automatically save\\n    values to <code>localStorage<\/code> on exit.\\n\\n    <div id=\"dg-local-explain\">The values saved to <code>localStorage<\/code> will\\n      override those passed to <code>dat.GUI<\/code>\\'s constructor. This makes it\\n      easier to work incrementally, but <code>localStorage<\/code> is fragile,\\n      and your friends may not see the same values you do.\\n      \\n    <\/div>\\n    \\n  <\/div>\\n\\n<\/div>',\n\".dg {\\n  \/** Clear list styles *\/\\n  \/* Auto-place container *\/\\n  \/* Auto-placed GUI's *\/\\n  \/* Line items that don't contain folders. *\/\\n  \/** Folder names *\/\\n  \/** Hides closed items *\/\\n  \/** Controller row *\/\\n  \/** Name-half (left) *\/\\n  \/** Controller-half (right) *\/\\n  \/** Controller placement *\/\\n  \/** Shorter number boxes when slider is present. *\/\\n  \/** Ensure the entire boolean and function row shows a hand *\/ }\\n  .dg ul {\\n    list-style: none;\\n    margin: 0;\\n    padding: 0;\\n    width: 100%;\\n    clear: both; }\\n  .dg.ac {\\n    position: fixed;\\n    top: 0;\\n    left: 0;\\n    right: 0;\\n    height: 0;\\n    z-index: 0; }\\n  .dg:not(.ac) .main {\\n    \/** Exclude mains in ac so that we don't hide close button *\/\\n    overflow: hidden; }\\n  .dg.main {\\n    -webkit-transition: opacity 0.1s linear;\\n    -o-transition: opacity 0.1s linear;\\n    -moz-transition: opacity 0.1s linear;\\n    transition: opacity 0.1s linear; }\\n    .dg.main.taller-than-window {\\n      overflow-y: auto; }\\n      .dg.main.taller-than-window .close-button {\\n        opacity: 1;\\n        \/* TODO, these are style notes *\/\\n        margin-top: -1px;\\n        border-top: 1px solid #2c2c2c; }\\n    .dg.main ul.closed .close-button {\\n      opacity: 1 !important; }\\n    .dg.main:hover .close-button,\\n    .dg.main .close-button.drag {\\n      opacity: 1; }\\n    .dg.main .close-button {\\n      \/*opacity: 0;*\/\\n      -webkit-transition: opacity 0.1s linear;\\n      -o-transition: opacity 0.1s linear;\\n      -moz-transition: opacity 0.1s linear;\\n      transition: opacity 0.1s linear;\\n      border: 0;\\n      position: absolute;\\n      line-height: 19px;\\n      height: 20px;\\n      \/* TODO, these are style notes *\/\\n      cursor: pointer;\\n      text-align: center;\\n      background-color: #000; }\\n      .dg.main .close-button:hover {\\n        background-color: #111; }\\n  .dg.a {\\n    float: right;\\n    margin-right: 15px;\\n    overflow-x: hidden; }\\n    .dg.a.has-save > ul {\\n      margin-top: 27px; }\\n      .dg.a.has-save > ul.closed {\\n        margin-top: 0; }\\n    .dg.a .save-row {\\n      position: fixed;\\n      top: 0;\\n      z-index: 1002; }\\n  .dg li {\\n    -webkit-transition: height 0.1s ease-out;\\n    -o-transition: height 0.1s ease-out;\\n    -moz-transition: height 0.1s ease-out;\\n    transition: height 0.1s ease-out; }\\n  .dg li:not(.folder) {\\n    cursor: auto;\\n    height: 27px;\\n    line-height: 27px;\\n    overflow: hidden;\\n    padding: 0 4px 0 5px; }\\n  .dg li.folder {\\n    padding: 0;\\n    border-left: 4px solid rgba(0, 0, 0, 0); }\\n  .dg li.title {\\n    cursor: pointer;\\n    margin-left: -4px; }\\n  .dg .closed li:not(.title),\\n  .dg .closed ul li,\\n  .dg .closed ul li > * {\\n    height: 0;\\n    overflow: hidden;\\n    border: 0; }\\n  .dg .cr {\\n    clear: both;\\n    padding-left: 3px;\\n    height: 27px; }\\n  .dg .property-name {\\n    cursor: default;\\n    float: left;\\n    clear: left;\\n    width: 40%;\\n    overflow: hidden;\\n    text-overflow: ellipsis; }\\n  .dg .c {\\n    float: left;\\n    width: 60%; }\\n  .dg .c input[type=text] {\\n    border: 0;\\n    margin-top: 4px;\\n    padding: 3px;\\n    width: 100%;\\n    float: right; }\\n  .dg .has-slider input[type=text] {\\n    width: 30%;\\n    \/*display: none;*\/\\n    margin-left: 0; }\\n  .dg .slider {\\n    float: left;\\n    width: 66%;\\n    margin-left: -5px;\\n    margin-right: 0;\\n    height: 19px;\\n    margin-top: 4px; }\\n  .dg .slider-fg {\\n    height: 100%; }\\n  .dg .c input[type=checkbox] {\\n    margin-top: 9px; }\\n  .dg .c select {\\n    margin-top: 5px; }\\n  .dg .cr.function,\\n  .dg .cr.function .property-name,\\n  .dg .cr.function *,\\n  .dg .cr.boolean,\\n  .dg .cr.boolean * {\\n    cursor: pointer; }\\n  .dg .selector {\\n    display: none;\\n    position: absolute;\\n    margin-left: -9px;\\n    margin-top: 23px;\\n    z-index: 10; }\\n  .dg .c:hover .selector,\\n  .dg .selector.drag {\\n    display: block; }\\n  .dg li.save-row {\\n    padding: 0; }\\n    .dg li.save-row .button {\\n      display: inline-block;\\n      padding: 0px 6px; }\\n  .dg.dialogue {\\n    background-color: #222;\\n    width: 460px;\\n    padding: 15px;\\n    font-size: 13px;\\n    line-height: 15px; }\\n\\n\/* TODO Separate style and structure *\/\\n#dg-new-constructor {\\n  padding: 10px;\\n  color: #222;\\n  font-family: Monaco, monospace;\\n  font-size: 10px;\\n  border: 0;\\n  resize: none;\\n  box-shadow: inset 1px 1px 1px #888;\\n  word-wrap: break-word;\\n  margin: 12px 0;\\n  display: block;\\n  width: 440px;\\n  overflow-y: scroll;\\n  height: 100px;\\n  position: relative; }\\n\\n#dg-local-explain {\\n  display: none;\\n  font-size: 11px;\\n  line-height: 17px;\\n  border-radius: 3px;\\n  background-color: #333;\\n  padding: 8px;\\n  margin-top: 10px; }\\n  #dg-local-explain code {\\n    font-size: 10px; }\\n\\n#dat-gui-save-locally {\\n  display: none; }\\n\\n\/** Main type *\/\\n.dg {\\n  color: #eee;\\n  font: 11px 'Lucida Grande', sans-serif;\\n  text-shadow: 0 -1px 0 #111;\\n  \/** Auto place *\/\\n  \/* Controller row, <li> *\/\\n  \/** Controllers *\/ }\\n  .dg.main {\\n    \/** Scrollbar *\/ }\\n    .dg.main::-webkit-scrollbar {\\n      width: 5px;\\n      background: #1a1a1a; }\\n    .dg.main::-webkit-scrollbar-corner {\\n      height: 0;\\n      display: none; }\\n    .dg.main::-webkit-scrollbar-thumb {\\n      border-radius: 5px;\\n      background: #676767; }\\n  .dg li:not(.folder) {\\n    background: #1a1a1a;\\n    border-bottom: 1px solid #2c2c2c; }\\n  .dg li.save-row {\\n    line-height: 25px;\\n    background: #dad5cb;\\n    border: 0; }\\n    .dg li.save-row select {\\n      margin-left: 5px;\\n      width: 108px; }\\n    .dg li.save-row .button {\\n      margin-left: 5px;\\n      margin-top: 1px;\\n      border-radius: 2px;\\n      font-size: 9px;\\n      line-height: 7px;\\n      padding: 4px 4px 5px 4px;\\n      background: #c5bdad;\\n      color: #fff;\\n      text-shadow: 0 1px 0 #b0a58f;\\n      box-shadow: 0 -1px 0 #b0a58f;\\n      cursor: pointer; }\\n      .dg li.save-row .button.gears {\\n        background: #c5bdad url(data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAANCAYAAAB\/9ZQ7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQJJREFUeNpiYKAU\/P\/\/PwGIC\/ApCABiBSAW+I8AClAcgKxQ4T9hoMAEUrxx2QSGN6+egDX+\/vWT4e7N82AMYoPAx\/evwWoYoSYbACX2s7KxCxzcsezDh3evFoDEBYTEEqycggWAzA9AuUSQQgeYPa9fPv6\/YWm\/Acx5IPb7ty\/fw+QZblw67vDs8R0YHyQhgObx+yAJkBqmG5dPPDh1aPOGR\/eugW0G4vlIoTIfyFcA+QekhhHJhPdQxbiAIguMBTQZrPD7108M6roWYDFQiIAAv6Aow\/1bFwXgis+f2LUAynwoIaNcz8XNx3Dl7MEJUDGQpx9gtQ8YCueB+D26OECAAQDadt7e46D42QAAAABJRU5ErkJggg==) 2px 1px no-repeat;\\n        height: 7px;\\n        width: 8px; }\\n      .dg li.save-row .button:hover {\\n        background-color: #bab19e;\\n        box-shadow: 0 -1px 0 #b0a58f; }\\n  .dg li.folder {\\n    border-bottom: 0; }\\n  .dg li.title {\\n    padding-left: 16px;\\n    background: black url(data:image\/gif;base64,R0lGODlhBQAFAJEAAP\/\/\/\/Pz8\/\/\/\/\/\/\/\/yH5BAEAAAIALAAAAAAFAAUAAAIIlI+hKgFxoCgAOw==) 6px 10px no-repeat;\\n    cursor: pointer;\\n    border-bottom: 1px solid rgba(255, 255, 255, 0.2); }\\n  .dg .closed li.title {\\n    background-image: url(data:image\/gif;base64,R0lGODlhBQAFAJEAAP\/\/\/\/Pz8\/\/\/\/\/\/\/\/yH5BAEAAAIALAAAAAAFAAUAAAIIlGIWqMCbWAEAOw==); }\\n  .dg .cr.boolean {\\n    border-left: 3px solid #806787; }\\n  .dg .cr.function {\\n    border-left: 3px solid #e61d5f; }\\n  .dg .cr.number {\\n    border-left: 3px solid #2fa1d6; }\\n    .dg .cr.number input[type=text] {\\n      color: #2fa1d6; }\\n  .dg .cr.string {\\n    border-left: 3px solid #1ed36f; }\\n    .dg .cr.string input[type=text] {\\n      color: #1ed36f; }\\n  .dg .cr.function:hover, .dg .cr.boolean:hover {\\n    background: #111; }\\n  .dg .c input[type=text] {\\n    background: #303030;\\n    outline: none; }\\n    .dg .c input[type=text]:hover {\\n      background: #3c3c3c; }\\n    .dg .c input[type=text]:focus {\\n      background: #494949;\\n      color: #fff; }\\n  .dg .c .slider {\\n    background: #303030;\\n    cursor: ew-resize; }\\n  .dg .c .slider-fg {\\n    background: #2fa1d6; }\\n  .dg .c .slider:hover {\\n    background: #3c3c3c; }\\n    .dg .c .slider:hover .slider-fg {\\n      background: #44abda; }\\n\",\ndat.controllers.factory=function(f,a,d,e,c,b,p){return function(q,l,r,n){var u=q[l];if(p.isArray(r)||p.isObject(r))return new f(q,l,r);if(p.isNumber(u))return p.isNumber(r)&&p.isNumber(n)?new d(q,l,r,n):new a(q,l,{min:r,max:n});if(p.isString(u))return new e(q,l);if(p.isFunction(u))return new c(q,l,\"\");if(p.isBoolean(u))return new b(q,l)}}(dat.controllers.OptionController,dat.controllers.NumberControllerBox,dat.controllers.NumberControllerSlider,dat.controllers.StringController=function(f,a,d){var e=\nfunction(c,b){function d(){f.setValue(f.__input.value)}e.superclass.call(this,c,b);var f=this;this.__input=document.createElement(\"input\");this.__input.setAttribute(\"type\",\"text\");a.bind(this.__input,\"keyup\",d);a.bind(this.__input,\"change\",d);a.bind(this.__input,\"blur\",function(){f.__onFinishChange&&f.__onFinishChange.call(f,f.getValue())});a.bind(this.__input,\"keydown\",function(a){13===a.keyCode&&this.blur()});this.updateDisplay();this.domElement.appendChild(this.__input)};e.superclass=f;d.extend(e.prototype,\nf.prototype,{updateDisplay:function(){a.isActive(this.__input)||(this.__input.value=this.getValue());return e.superclass.prototype.updateDisplay.call(this)}});return e}(dat.controllers.Controller,dat.dom.dom,dat.utils.common),dat.controllers.FunctionController,dat.controllers.BooleanController,dat.utils.common),dat.controllers.Controller,dat.controllers.BooleanController,dat.controllers.FunctionController,dat.controllers.NumberControllerBox,dat.controllers.NumberControllerSlider,dat.controllers.OptionController,\ndat.controllers.ColorController=function(f,a,d,e,c){function b(a,b,d,e){a.style.background=\"\";c.each(l,function(c){a.style.cssText+=\"background: \"+c+\"linear-gradient(\"+b+\", \"+d+\" 0%, \"+e+\" 100%); \"})}function p(a){a.style.background=\"\";a.style.cssText+=\"background: -moz-linear-gradient(top,  #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);\";a.style.cssText+=\"background: -webkit-linear-gradient(top,  #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);\";\na.style.cssText+=\"background: -o-linear-gradient(top,  #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);\";a.style.cssText+=\"background: -ms-linear-gradient(top,  #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);\";a.style.cssText+=\"background: linear-gradient(top,  #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);\"}var q=function(f,n){function u(b){v(b);a.bind(window,\"mousemove\",v);a.bind(window,\n\"mouseup\",l)}function l(){a.unbind(window,\"mousemove\",v);a.unbind(window,\"mouseup\",l)}function g(){var a=e(this.value);!1!==a?(t.__color.__state=a,t.setValue(t.__color.toOriginal())):this.value=t.__color.toString()}function k(){a.unbind(window,\"mousemove\",w);a.unbind(window,\"mouseup\",k)}function v(b){b.preventDefault();var c=a.getWidth(t.__saturation_field),d=a.getOffset(t.__saturation_field),e=(b.clientX-d.left+document.body.scrollLeft)\/c;b=1-(b.clientY-d.top+document.body.scrollTop)\/c;1<b?b=1:0>\nb&&(b=0);1<e?e=1:0>e&&(e=0);t.__color.v=b;t.__color.s=e;t.setValue(t.__color.toOriginal());return!1}function w(b){b.preventDefault();var c=a.getHeight(t.__hue_field),d=a.getOffset(t.__hue_field);b=1-(b.clientY-d.top+document.body.scrollTop)\/c;1<b?b=1:0>b&&(b=0);t.__color.h=360*b;t.setValue(t.__color.toOriginal());return!1}q.superclass.call(this,f,n);this.__color=new d(this.getValue());this.__temp=new d(0);var t=this;this.domElement=document.createElement(\"div\");a.makeSelectable(this.domElement,!1);\nthis.__selector=document.createElement(\"div\");this.__selector.className=\"selector\";this.__saturation_field=document.createElement(\"div\");this.__saturation_field.className=\"saturation-field\";this.__field_knob=document.createElement(\"div\");this.__field_knob.className=\"field-knob\";this.__field_knob_border=\"2px solid \";this.__hue_knob=document.createElement(\"div\");this.__hue_knob.className=\"hue-knob\";this.__hue_field=document.createElement(\"div\");this.__hue_field.className=\"hue-field\";this.__input=document.createElement(\"input\");\nthis.__input.type=\"text\";this.__input_textShadow=\"0 1px 1px \";a.bind(this.__input,\"keydown\",function(a){13===a.keyCode&&g.call(this)});a.bind(this.__input,\"blur\",g);a.bind(this.__selector,\"mousedown\",function(b){a.addClass(this,\"drag\").bind(window,\"mouseup\",function(b){a.removeClass(t.__selector,\"drag\")})});var y=document.createElement(\"div\");c.extend(this.__selector.style,{width:\"122px\",height:\"102px\",padding:\"3px\",backgroundColor:\"#222\",boxShadow:\"0px 1px 3px rgba(0,0,0,0.3)\"});c.extend(this.__field_knob.style,\n{position:\"absolute\",width:\"12px\",height:\"12px\",border:this.__field_knob_border+(.5>this.__color.v?\"#fff\":\"#000\"),boxShadow:\"0px 1px 3px rgba(0,0,0,0.5)\",borderRadius:\"12px\",zIndex:1});c.extend(this.__hue_knob.style,{position:\"absolute\",width:\"15px\",height:\"2px\",borderRight:\"4px solid #fff\",zIndex:1});c.extend(this.__saturation_field.style,{width:\"100px\",height:\"100px\",border:\"1px solid #555\",marginRight:\"3px\",display:\"inline-block\",cursor:\"pointer\"});c.extend(y.style,{width:\"100%\",height:\"100%\",\nbackground:\"none\"});b(y,\"top\",\"rgba(0,0,0,0)\",\"#000\");c.extend(this.__hue_field.style,{width:\"15px\",height:\"100px\",display:\"inline-block\",border:\"1px solid #555\",cursor:\"ns-resize\"});p(this.__hue_field);c.extend(this.__input.style,{outline:\"none\",textAlign:\"center\",color:\"#fff\",border:0,fontWeight:\"bold\",textShadow:this.__input_textShadow+\"rgba(0,0,0,0.7)\"});a.bind(this.__saturation_field,\"mousedown\",u);a.bind(this.__field_knob,\"mousedown\",u);a.bind(this.__hue_field,\"mousedown\",function(b){w(b);a.bind(window,\n\"mousemove\",w);a.bind(window,\"mouseup\",k)});this.__saturation_field.appendChild(y);this.__selector.appendChild(this.__field_knob);this.__selector.appendChild(this.__saturation_field);this.__selector.appendChild(this.__hue_field);this.__hue_field.appendChild(this.__hue_knob);this.domElement.appendChild(this.__input);this.domElement.appendChild(this.__selector);this.updateDisplay()};q.superclass=f;c.extend(q.prototype,f.prototype,{updateDisplay:function(){var a=e(this.getValue());if(!1!==a){var f=!1;\nc.each(d.COMPONENTS,function(b){if(!c.isUndefined(a[b])&&!c.isUndefined(this.__color.__state[b])&&a[b]!==this.__color.__state[b])return f=!0,{}},this);f&&c.extend(this.__color.__state,a)}c.extend(this.__temp.__state,this.__color.__state);this.__temp.a=1;var l=.5>this.__color.v||.5<this.__color.s?255:0,p=255-l;c.extend(this.__field_knob.style,{marginLeft:100*this.__color.s-7+\"px\",marginTop:100*(1-this.__color.v)-7+\"px\",backgroundColor:this.__temp.toString(),border:this.__field_knob_border+\"rgb(\"+l+\n\",\"+l+\",\"+l+\")\"});this.__hue_knob.style.marginTop=100*(1-this.__color.h\/360)+\"px\";this.__temp.s=1;this.__temp.v=1;b(this.__saturation_field,\"left\",\"#fff\",this.__temp.toString());c.extend(this.__input.style,{backgroundColor:this.__input.value=this.__color.toString(),color:\"rgb(\"+l+\",\"+l+\",\"+l+\")\",textShadow:this.__input_textShadow+\"rgba(\"+p+\",\"+p+\",\"+p+\",.7)\"})}});var l=[\"-moz-\",\"-o-\",\"-webkit-\",\"-ms-\",\"\"];return q}(dat.controllers.Controller,dat.dom.dom,dat.color.Color=function(f,a,d,e){function c(a,\nb,c){Object.defineProperty(a,b,{get:function(){if(\"RGB\"===this.__state.space)return this.__state[b];p(this,b,c);return this.__state[b]},set:function(a){\"RGB\"!==this.__state.space&&(p(this,b,c),this.__state.space=\"RGB\");this.__state[b]=a}})}function b(a,b){Object.defineProperty(a,b,{get:function(){if(\"HSV\"===this.__state.space)return this.__state[b];q(this);return this.__state[b]},set:function(a){\"HSV\"!==this.__state.space&&(q(this),this.__state.space=\"HSV\");this.__state[b]=a}})}function p(b,c,d){if(\"HEX\"===\nb.__state.space)b.__state[c]=a.component_from_hex(b.__state.hex,d);else if(\"HSV\"===b.__state.space)e.extend(b.__state,a.hsv_to_rgb(b.__state.h,b.__state.s,b.__state.v));else throw\"Corrupted color state\";}function q(b){var c=a.rgb_to_hsv(b.r,b.g,b.b);e.extend(b.__state,{s:c.s,v:c.v});e.isNaN(c.h)?e.isUndefined(b.__state.h)&&(b.__state.h=0):b.__state.h=c.h}var l=function(){this.__state=f.apply(this,arguments);if(!1===this.__state)throw\"Failed to interpret color arguments\";this.__state.a=this.__state.a||\n1};l.COMPONENTS=\"r g b h s v hex a\".split(\" \");e.extend(l.prototype,{toString:function(){return d(this)},toOriginal:function(){return this.__state.conversion.write(this)}});c(l.prototype,\"r\",2);c(l.prototype,\"g\",1);c(l.prototype,\"b\",0);b(l.prototype,\"h\");b(l.prototype,\"s\");b(l.prototype,\"v\");Object.defineProperty(l.prototype,\"a\",{get:function(){return this.__state.a},set:function(a){this.__state.a=a}});Object.defineProperty(l.prototype,\"hex\",{get:function(){\"HEX\"!==!this.__state.space&&(this.__state.hex=\na.rgb_to_hex(this.r,this.g,this.b));return this.__state.hex},set:function(a){this.__state.space=\"HEX\";this.__state.hex=a}});return l}(dat.color.interpret,dat.color.math=function(){var f;return{hsv_to_rgb:function(a,d,e){var c=a\/60-Math.floor(a\/60),b=e*(1-d),f=e*(1-c*d);d=e*(1-(1-c)*d);a=[[e,d,b],[f,e,b],[b,e,d],[b,f,e],[d,b,e],[e,b,f]][Math.floor(a\/60)%6];return{r:255*a[0],g:255*a[1],b:255*a[2]}},rgb_to_hsv:function(a,d,e){var c=Math.min(a,d,e),b=Math.max(a,d,e),c=b-c;if(0==b)return{h:NaN,s:0,v:0};\na=(a==b?(d-e)\/c:d==b?2+(e-a)\/c:4+(a-d)\/c)\/6;0>a&&(a+=1);return{h:360*a,s:c\/b,v:b\/255}},rgb_to_hex:function(a,d,e){a=this.hex_with_component(0,2,a);a=this.hex_with_component(a,1,d);return a=this.hex_with_component(a,0,e)},component_from_hex:function(a,d){return a>>8*d&255},hex_with_component:function(a,d,e){return e<<(f=8*d)|a&~(255<<f)}}}(),dat.color.toString,dat.utils.common),dat.color.interpret,dat.utils.common),dat.utils.requestAnimationFrame=function(){return window.webkitRequestAnimationFrame||\nwindow.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(f,a){window.setTimeout(f,1E3\/60)}}(),dat.dom.CenteredDiv=function(f,a){var d=function(){this.backgroundElement=document.createElement(\"div\");a.extend(this.backgroundElement.style,{backgroundColor:\"rgba(0,0,0,0.8)\",top:0,left:0,display:\"none\",zIndex:\"1000\",opacity:0,WebkitTransition:\"opacity 0.2s linear\",transition:\"opacity 0.2s linear\"});f.makeFullscreen(this.backgroundElement);this.backgroundElement.style.position=\n\"fixed\";this.domElement=document.createElement(\"div\");a.extend(this.domElement.style,{position:\"fixed\",display:\"none\",zIndex:\"1001\",opacity:0,WebkitTransition:\"-webkit-transform 0.2s ease-out, opacity 0.2s linear\",transition:\"transform 0.2s ease-out, opacity 0.2s linear\"});document.body.appendChild(this.backgroundElement);document.body.appendChild(this.domElement);var d=this;f.bind(this.backgroundElement,\"click\",function(){d.hide()})};d.prototype.show=function(){var d=this;this.backgroundElement.style.display=\n\"block\";this.domElement.style.display=\"block\";this.domElement.style.opacity=0;this.domElement.style.webkitTransform=\"scale(1.1)\";this.layout();a.defer(function(){d.backgroundElement.style.opacity=1;d.domElement.style.opacity=1;d.domElement.style.webkitTransform=\"scale(1)\"})};d.prototype.hide=function(){var a=this,c=function(){a.domElement.style.display=\"none\";a.backgroundElement.style.display=\"none\";f.unbind(a.domElement,\"webkitTransitionEnd\",c);f.unbind(a.domElement,\"transitionend\",c);f.unbind(a.domElement,\n\"oTransitionEnd\",c)};f.bind(this.domElement,\"webkitTransitionEnd\",c);f.bind(this.domElement,\"transitionend\",c);f.bind(this.domElement,\"oTransitionEnd\",c);this.backgroundElement.style.opacity=0;this.domElement.style.opacity=0;this.domElement.style.webkitTransform=\"scale(1.1)\"};d.prototype.layout=function(){this.domElement.style.left=window.innerWidth\/2-f.getWidth(this.domElement)\/2+\"px\";this.domElement.style.top=window.innerHeight\/2-f.getHeight(this.domElement)\/2+\"px\"};return d}(dat.dom.dom,dat.utils.common),\ndat.dom.dom,dat.utils.common);\n<\/script>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a0b2a14 elementor-absolute elementor-widget elementor-widget-html\" data-id=\"a0b2a14\" data-element_type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<script>\n    \/**\n * @author mrdoob \/ http:\/\/mrdoob.com\/\n *\/\n\nvar Stats = function () {\n\n\tvar startTime = Date.now(), prevTime = startTime;\n\tvar ms = 0, msMin = Infinity, msMax = 0;\n\tvar fps = 0, fpsMin = Infinity, fpsMax = 0;\n\tvar frames = 0, mode = 0;\n\n\tvar container = document.createElement( 'div' );\n\tcontainer.id = 'stats';\n\tcontainer.addEventListener( 'mousedown', function ( event ) { event.preventDefault(); setMode( ++ mode % 2 ) }, false );\n\tcontainer.style.cssText = 'width:80px;opacity:0.9;cursor:pointer';\n\n\tvar fpsDiv = document.createElement( 'div' );\n\tfpsDiv.id = 'fps';\n\tfpsDiv.style.cssText = 'padding:0 0 3px 3px;text-align:left;background-color:#002';\n\tcontainer.appendChild( fpsDiv );\n\n\tvar fpsText = document.createElement( 'div' );\n\tfpsText.id = 'fpsText';\n\tfpsText.style.cssText = 'color:#0ff;font-family:Helvetica,Arial,sans-serif;font-size:9px;font-weight:bold;line-height:15px';\n\tfpsText.innerHTML = 'FPS';\n\tfpsDiv.appendChild( fpsText );\n\n\tvar fpsGraph = document.createElement( 'div' );\n\tfpsGraph.id = 'fpsGraph';\n\tfpsGraph.style.cssText = 'position:relative;width:74px;height:30px;background-color:#0ff';\n\tfpsDiv.appendChild( fpsGraph );\n\n\twhile ( fpsGraph.children.length < 74 ) {\n\n\t\tvar bar = document.createElement( 'span' );\n\t\tbar.style.cssText = 'width:1px;height:30px;float:left;background-color:#113';\n\t\tfpsGraph.appendChild( bar );\n\n\t}\n\n\tvar msDiv = document.createElement( 'div' );\n\tmsDiv.id = 'ms';\n\tmsDiv.style.cssText = 'padding:0 0 3px 3px;text-align:left;background-color:#020;display:none';\n\tcontainer.appendChild( msDiv );\n\n\tvar msText = document.createElement( 'div' );\n\tmsText.id = 'msText';\n\tmsText.style.cssText = 'color:#0f0;font-family:Helvetica,Arial,sans-serif;font-size:9px;font-weight:bold;line-height:15px';\n\tmsText.innerHTML = 'MS';\n\tmsDiv.appendChild( msText );\n\n\tvar msGraph = document.createElement( 'div' );\n\tmsGraph.id = 'msGraph';\n\tmsGraph.style.cssText = 'position:relative;width:74px;height:30px;background-color:#0f0';\n\tmsDiv.appendChild( msGraph );\n\n\twhile ( msGraph.children.length < 74 ) {\n\n\t\tvar bar = document.createElement( 'span' );\n\t\tbar.style.cssText = 'width:1px;height:30px;float:left;background-color:#131';\n\t\tmsGraph.appendChild( bar );\n\n\t}\n\n\tvar setMode = function ( value ) {\n\n\t\tmode = value;\n\n\t\tswitch ( mode ) {\n\n\t\t\tcase 0:\n\t\t\t\tfpsDiv.style.display = 'block';\n\t\t\t\tmsDiv.style.display = 'none';\n\t\t\t\tbreak;\n\t\t\tcase 1:\n\t\t\t\tfpsDiv.style.display = 'none';\n\t\t\t\tmsDiv.style.display = 'block';\n\t\t\t\tbreak;\n\t\t}\n\n\t}\n\n\tvar updateGraph = function ( dom, value ) {\n\n\t\tvar child = dom.appendChild( dom.firstChild );\n\t\tchild.style.height = value + 'px';\n\n\t}\n\n\treturn {\n\n\t\tREVISION: 11,\n\n\t\tdomElement: container,\n\n\t\tsetMode: setMode,\n\n\t\tbegin: function () {\n\n\t\t\tstartTime = Date.now();\n\n\t\t},\n\n\t\tend: function () {\n\n\t\t\tvar time = Date.now();\n\n\t\t\tms = time - startTime;\n\t\t\tmsMin = Math.min( msMin, ms );\n\t\t\tmsMax = Math.max( msMax, ms );\n\n\t\t\tmsText.textContent = ms + ' MS (' + msMin + '-' + msMax + ')';\n\t\t\tupdateGraph( msGraph, Math.min( 30, 30 - ( ms \/ 200 ) * 30 ) );\n\n\t\t\tframes ++;\n\n\t\t\tif ( time > prevTime + 1000 ) {\n\n\t\t\t\tfps = Math.round( ( frames * 1000 ) \/ ( time - prevTime ) );\n\t\t\t\tfpsMin = Math.min( fpsMin, fps );\n\t\t\t\tfpsMax = Math.max( fpsMax, fps );\n\n\t\t\t\tfpsText.textContent = fps + ' FPS (' + fpsMin + '-' + fpsMax + ')';\n\t\t\t\tupdateGraph( fpsGraph, Math.min( 30, 30 - ( fps \/ 100 ) * 30 ) );\n\n\t\t\t\tprevTime = time;\n\t\t\t\tframes = 0;\n\n\t\t\t}\n\n\t\t\treturn time;\n\n\t\t},\n\n\t\tupdate: function () {\n\n\t\t\tstartTime = this.end();\n\n\t\t}\n\n\t}\n\n};\n<\/script>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c3b2ed8 elementor-absolute elementor-widget elementor-widget-html\" data-id=\"c3b2ed8\" data-element_type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<canvas id=\"swarm\" class=\"bg-animation\" width=\"1920\" height=\"937\" ><\/canvas>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6718aba elementor-widget elementor-widget-heading\" data-id=\"6718aba\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.9.2 - 21-12-2022 *\/\n.elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}<\/style><span class=\"elementor-heading-title elementor-size-default\">WE ARE<\/span>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-eaeefbc content_main_left_wrapper_top elementor-widget elementor-widget-heading\" data-id=\"eaeefbc\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Coming Soon<\/h1>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-48885c6 elementor-widget elementor-widget-text-editor\" data-id=\"48885c6\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.9.2 - 21-12-2022 *\/\n.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#818a91;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#818a91;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:left;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}<\/style>\t\t\t\tOur website is under construction. We are working very hard to give you the best experience with this one.\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-39cf5d3 elementor-widget elementor-widget-html\" data-id=\"39cf5d3\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div id=\"countdown\" class=\"datecountdown row\">\r\n<div id=\"day\"><\/div>\r\n<div id=\"hours\"><\/div>\r\n<div id=\"minutes\"><\/div>\r\n<div id=\"seconds\"><\/div>\r\n<\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-82ae7b3 elementor-widget elementor-widget-html\" data-id=\"82ae7b3\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div id=\"btn_wrapper\">\r\n<a class=\"btn_notify btn-hover btn-item\"><span><\/span>NOTIFY ME<\/a>\r\n<\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-9384dc8 notify-form  elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"9384dc8\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-e303988 contents_in \" data-id=\"e303988\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b12f1f8 elementor-widget elementor-widget-heading\" data-id=\"b12f1f8\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<span class=\"elementor-heading-title elementor-size-default\"><span class=\"close\">\u00d7<\/span>\n<small class=\"tagline\">STAY IN TOUCH<\/small><\/span>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-47102e2 elementor-widget elementor-widget-heading\" data-id=\"47102e2\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<span class=\"elementor-heading-title elementor-size-default\"> <h2 class=\"site-title\">We Are Almost Here<\/h2> <\/span>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-58c7c55 elementor-widget elementor-widget-heading\" data-id=\"58c7c55\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<span class=\"elementor-heading-title elementor-size-default\"><div class=\"notify_desc\">Subscribe to our newsletter and we will send you a notification about the launch of our brand new site.<\/div><\/span>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b093715 eael-contact-form-7-button-align-left eael-contact-form-7-button-custom elementor-widget elementor-widget-eael-contact-form-7\" data-id=\"b093715\" data-element_type=\"widget\" data-widget_type=\"eael-contact-form-7.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div class=\"eael-contact-form-7-wrapper\">\n                <div class=\"eael-contact-form eael-contact-form-7 eael-contact-form-b093715 placeholder-show eael-contact-form-align-default\">\n<div class=\"wpcf7 no-js\" id=\"wpcf7-f5410-o1\" lang=\"en-US\" dir=\"ltr\">\n<div class=\"screen-reader-response\"><p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/p> <ul><\/ul><\/div>\n<form action=\"\/envato\/bramha\/bramha_preview\/wp-json\/wp\/v2\/pages\/2618#wpcf7-f5410-o1\" method=\"post\" class=\"wpcf7-form init\" aria-label=\"Contact form\" novalidate=\"novalidate\" data-status=\"init\">\n<div style=\"display: none;\">\n<input type=\"hidden\" name=\"_wpcf7\" value=\"5410\" \/>\n<input type=\"hidden\" name=\"_wpcf7_version\" value=\"5.7.4\" \/>\n<input type=\"hidden\" name=\"_wpcf7_locale\" value=\"en_US\" \/>\n<input type=\"hidden\" name=\"_wpcf7_unit_tag\" value=\"wpcf7-f5410-o1\" \/>\n<input type=\"hidden\" name=\"_wpcf7_container_post\" value=\"0\" \/>\n<input type=\"hidden\" name=\"_wpcf7_posted_data_hash\" value=\"\" \/>\n<\/div>\n<div class=\"contact-top\">\n\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"email\"><input size=\"40\" class=\"wpcf7-form-control wpcf7-text wpcf7-email wpcf7-validates-as-required wpcf7-validates-as-email form-control\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Email Address*\" value=\"\" type=\"email\" name=\"email\" \/><\/span>\n\t<\/p>\n\t<div class=\"notify_submit_btn\">\n\t\t<p><input class=\"wpcf7-form-control has-spinner wpcf7-submit submit-btn\" type=\"submit\" value=\"SEND\" \/>\n\t\t<\/p>\n\t<\/div>\n<\/div><div class=\"wpcf7-response-output\" aria-hidden=\"true\"><\/div>\n<\/form>\n<\/div>\n<\/div>\n            <\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-6aaf818 content_main_right h-100\" data-id=\"6aaf818\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-9cc2773 h-100 slider-custom elementor-absolute elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"9cc2773\" data-element_type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<video class=\"custom-mainvideo\" autoplay loop muted>\r\n    <source src=\"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-content\/uploads\/2023\/03\/Agua-natural.mp4\" \/>\r\n<\/video>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1c86ff0 h-100 elementor-hidden-desktop elementor-hidden-tablet elementor-hidden-mobile elementor-widget elementor-widget-html\" data-id=\"1c86ff0\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\r\n<div class=\"h_sidebar_slider h-100\">\r\n<div class=\"bg-image\" style=\"background-image: url('https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-content\/uploads\/2023\/01\/header_sidebar_slider_1.png')\">\r\n    <div class=\"custom-slider-text\">\r\n        <h5>Unicorn Bath<\/h5>\r\n        <p>Photography<\/p>\r\n    <\/div>\r\n<\/div>\r\n<div class=\"bg-image\" style=\"background-image: url('https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-content\/uploads\/2023\/01\/contact_sidebar_image.png')\">\r\n    <div class=\"custom-slider-text\">\r\n        <h5>Unicorn Bath<\/h5>\r\n        <p>Photography<\/p>\r\n    <\/div>\r\n<\/div>\r\n<div class=\"bg-image\" style=\"background-image: url('https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-content\/uploads\/2023\/01\/header_sidebar_slider_1.png')\">\r\n    <div class=\"custom-slider-text\">\r\n        <h5>Unicorn Bath<\/h5>\r\n        <p>Photography<\/p>\r\n    <\/div>\r\n<\/div>\r\n<\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fab228f social_icons main_social_icons elementor-list-item-link-inline elementor-hidden-desktop elementor-hidden-tablet elementor-icon-list--layout-traditional elementor-widget elementor-widget-icon-list\" data-id=\"fab228f\" data-element_type=\"widget\" data-widget_type=\"icon-list.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<ul class=\"elementor-icon-list-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/www.facebook.com\/\" target=\"_blank\">\n\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">FB<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/twitter.com\/\" target=\"_blank\">\n\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">TW<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/www.linkedin.com\/\" target=\"_blank\">\n\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">IN<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-7969b75 elementor-section-full_width elementor-section-height-full elementor-section-items-stretch offcanvas__area elementor-section-height-default\" data-id=\"7969b75\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-a339f40 offcanvas__left\" data-id=\"a339f40\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-166ed0a offcanvas__middle\" data-id=\"166ed0a\" data-element_type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f62b3f5 eael-hamburger--none offcanvas__links h-100 eael-simple-menu-hamburger-align-right elementor-widget elementor-widget-eael-simple-menu\" data-id=\"f62b3f5\" data-element_type=\"widget\" data-widget_type=\"eael-simple-menu.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div data-hamburger-icon=\"&lt;i aria-hidden=&quot;true&quot; class=&quot;fas fa-bars&quot;&gt;&lt;\/i&gt;\" data-indicator-class=\"fas fa-angle-down\" data-dropdown-indicator-class=\"fas fa-angle-down\" class=\"eael-simple-menu-container eael-simple-menu-align-left eael-simple-menu--stretch eael-simple-menu-dropdown-align-left preset-2\" data-hamburger-breakpoints=\"{&quot;mobile&quot;:&quot;Mobile (&gt; 768px)&quot;,&quot;tablet&quot;:&quot;Tablet (&gt; 1024px)&quot;,&quot;none&quot;:&quot;None&quot;}\" data-hamburger-device=\"none\"><ul id=\"menu-theme-header-menu\" class=\"eael-simple-menu eael-simple-menu-dropdown-animate-to-top eael-simple-menu-indicator eael-simple-menu-vertical\"><li id=\"menu-item-4872\" class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-home menu-item-4872\"><a href=\"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/\">Home<\/a><\/li>\n<li id=\"menu-item-546\" class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-546\"><a href=\"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/about\/\">About Us<\/a><\/li>\n<li id=\"menu-item-547\" class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-547\"><a href=\"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/portfolio\/\">Portfolio<\/a><\/li>\n<li id=\"menu-item-548\" class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-548\"><a href=\"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/contact\/\">Contact<\/a><\/li>\n<\/ul><\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-3bda11e offcanvas__right\" data-id=\"3bda11e\" data-element_type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-04d4a5b elementor-widget elementor-widget-html\" data-id=\"04d4a5b\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div class=\"offcanvas__contact\">\r\n<h3>Get In Touch<\/h3>\r\n<ul>\r\n<li><a href=\"tel:+1 234 567 8899\">+1 234 567 8899<\/a>\r\n<\/li>\r\n\r\n<li><a href=\"mailto:hello@bramha.com\">hello@bramha.com<\/a>\r\n<\/li>\r\n\r\n<li>230 Norman Street New York,QC (USA) H8R 1A1<\/li>\r\n<\/ul>\r\n<\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-589ce30 elementor-widget elementor-widget-html\" data-id=\"589ce30\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div>Design By The_Krishna 2023<\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>FB TW IN WE ARE Coming Soon Our website is under construction. We are working very hard to give you the best experience with this one. NOTIFY ME \u00d7 STAY IN TOUCH We Are Almost Here Subscribe to our newsletter and we will send you a notification about the launch of our brand new site. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-2618","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-json\/wp\/v2\/pages\/2618"}],"collection":[{"href":"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-json\/wp\/v2\/comments?post=2618"}],"version-history":[{"count":7,"href":"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-json\/wp\/v2\/pages\/2618\/revisions"}],"predecessor-version":[{"id":6142,"href":"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-json\/wp\/v2\/pages\/2618\/revisions\/6142"}],"wp:attachment":[{"href":"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-json\/wp\/v2\/media?parent=2618"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}