diff --git a/README.md b/README.md index 6f50096..3d1f25e 100644 --- a/README.md +++ b/README.md @@ -6,4 +6,4 @@ Installation: http://www.flowbat.com/installation.html
User Manual: http://www.flowbat.com/user-manual.html
Support: support@flowbat.com -v1.3.2 +v1.5.0 diff --git a/client/helpers.coffee b/client/helpers.coffee index dfc24e4..492fc3c 100644 --- a/client/helpers.coffee +++ b/client/helpers.coffee @@ -2,6 +2,10 @@ UI.registerHelper("fieldI18nString", -> "rwcut.fields." + @.trim() ) +UI.registerHelper("fieldDefinitions", -> + "field.definitions." + @.trim() +) + UI.registerHelper("fieldIsSelected", (query, property) -> @.toString() in query[property] ) diff --git a/client/i18n/en.coffee b/client/i18n/en.coffee index c2e29e1..e483601 100644 --- a/client/i18n/en.coffee +++ b/client/i18n/en.coffee @@ -119,7 +119,7 @@ i18n.addResourceBundle("en", "initialFlags": "Initial flags" "sessionFlags": "Session flags" "application": "Application" - "type": "Sensor type" + "type": "Flow type" "sTime+msec": "starting time of flow including milliseconds (milliseconds are always displayed)" "eTime+msec": "end time of flow including milliseconds (milliseconds are always displayed)" "dur+msec": "duration of flow including milliseconds (milliseconds are always displayed)" @@ -132,6 +132,44 @@ i18n.addResourceBundle("en", "Bytes": "Bytes" "cumul_%": "% Cumulative" "Date": "Bin date and time" + field: + definitions: + "sIP": "Source IP address. These can be specified during input as IP addresses or CIDR notation." + "dIP": "Destination IP address. These can be specified during input as IP addresses or CIDR notation." + "aIP": "Matches source or destination IP address. These can be specified during input as IP addresses or CIDR notation." # proxy + "sPort": "Source ports can be specified during input as individual ports or hypenated ranges (IE: 0-1024)" + "dPort": "Destination ports can be specified during input as individual ports or hypenated ranges (IE: 0-1024)" + "aPort": "This will match against records with a source or destination port matching this value or range (IE: 0-1024)." # proxy + "protocol": "Pass the record if its IP Suite Protocol is in this INTEGER_LIST, possible values are 0-255." + "pro": "$t(rwcut.fields.protocol)" + "packets": "Pass the record if its packet count is in this INTEGER_RANGE or value." + "bytes": "Pass the record if its average bytes per packet count (bytes/packet) is in this DECIMAL_RANGE." + "flags": "Pass the record if any of the HIGH_SET/MASK_SET pairs is true when looking at the bitwise OR of the TCP flags across all packets in the flow." + "sTime": "Starting time of flow (seconds resolution)." + "duration": "Duration of flow (seconds resolution)." + "dur": "$t(rwcut.fields.duration)" + "eTime": "End time of the flow (seconds resolution)." + "sensor": "Name or ID of the sensor where the flow was collected." + "sen": "$t(rwcut.fields.sensor)" + "class": "Binning by class and/or type equates to binning by the integer value used internally to represent the class/type pair. See the rwflowpack configuration." + "scc": "This is filtering or grouping by source country code. The source country code refers to the country code associated with the source address per flow record." + "dcc": "This is filtering or grouping by destination country code. The destination country code refers to the country code associated with the destination address per flow record." + "initialFlags": "Pass the record if the initial HIGH_SET/MASK_SET pairs is true when looking at the bitwise OR of the TCP flags across the FIRST packet in the flow." + "sessionFlags": "Pass the record if any of the HIGH_SET/MASK_SET pairs is true when looking at the bitwise OR of the TCP flags across all packets in the flow, excluding the first." + "application": "The application value is the port number that is traditionally used for that type of traffic but is based on packet inspection by the generator. If the application cannot be determined, a 0 is used. Not all flow generators will inspect data to this level." + "type": "Flow type. Types are defined in silk.conf, they typically refer to the direction of the flow. Examples include; int2" + "sTime+msec": "starting time of flow including milliseconds (milliseconds are always displayed)" + "eTime+msec": "end time of flow including milliseconds (milliseconds are always displayed)" + "dur+msec": "duration of flow including milliseconds (milliseconds are always displayed)" + "iType": "Pass the record if its ICMP (or ICMPv6) type is in this INTEGER_LIST; possible values 0-255." + "iCode": "Pass the record if its ICMP (or ICMPv6) code is in this INTEGER_LIST; possible values 0-255." + "icmpTypeCode": "ICMP type & code." + # rwstats values + "Records": "In rwstats, count the number of flow records that mapped to each bin." + "Packets": "In rwstats, sum the number of packets across all records that mapped to each bin." + "Bytes": "In rwstats, sum the number of bytes across all records that mapped to each bin." + "cumul_%": "Cumulative-percentage" + "Date": "Bin date and time" users: fields: username: "Username" diff --git a/client/templates/help/help.html.jade b/client/templates/help/help.html.jade index 2b84f78..723f030 100644 --- a/client/templates/help/help.html.jade +++ b/client/templates/help/help.html.jade @@ -3,7 +3,416 @@ template(name="help") .row .col-xs-12 .panel - .panel-heading - h4.panel-title Help .panel-body - | Documentation will be here soon. + head + meta(charset='utf-8') + title Untitled Document.md + style. + body#preview + h1 + a#FlowBAT_0 + | FlowBAT Help + hr + p + a(href='http://www.flowbat.com/') FlowBAT + | is a graphical flow-based analysis tool. Utilizing the power and versatility of network flow records, + a(href='http://www.flowbat.com/') FlowBAT + | can help provide visibility for network administrators and network security practitioners. + p + | Whether you are a seasoned pro at using flow data or brand new to it, FlowBAT provides a user experience that should make it easy to rapidly track connections in to and out of your network. This includes + ul + li Investigating intrusion detection system alerts + li Tracking attacker activity through a network + li Troubleshooting network communication issues + li Learning more about the communication to/from devices on your network + h2 + a#ToC + | Table of Contents + hr + h4 + p(style='white-space:pre;') + a(href='#FlowBAT_0') FlowBAT + a(href='#Tech_10') Tech + a(href='#Count_40') Count + a(href='#Tech_10') Tech + a(href='#Installation_14') Installation + a(href='#Initial_Configuration_18') Initial Configuration + h5 + p(style='white-space:pre;') + a(href='#SiLK_Site_Configuration_File_20') - SiLK Site Configuration File + a(href='#SiLK_Root_Directory_22') - SiLK Root Directory + a(href='#Temporary_Storage_Directory_24') - Temporary Storage Directory + h4 + a(href='#Basic_Usage_and_Best_Practices_27') Basic Usage and Best Practices + h5 + p(style='white-space:pre;') + a(href='#Filters_31') - Filters + a(href='#Exclusions_38') - Exclusions + a(href='#Stats_45') - Stats + a(href='#Count_40') - Count + a(href='#IP_Sets_53') - IP Sets + a(href='#Tuple_Files_56') - Tuple Files + a(href='#PCAP_Analysis') - PCAP Analysis + a(href='#RWF_Analysis') - RWF Analysis + h4 + a(href='#Layout_59') Layout + h5 + p(style='white-space:pre;') + a(href='#Dashboard_69') - Dashboard + a(href='#Quick_Query_72') - Quick Query + a(href='#Saved_Queries_75') - Saved Queries + a(href='#IP_Sets_78') - IP Sets + a(href='#Tuple_Files_81') - Tuple Files + a(href='#Night_Mode') - Night Mode + a(href='#Configuration_Settings_84') - Configuration Settings + a(href='#User_Administration_86') - User Administration + a(href='#SiLK_Server_Administration_88') - SiLK Server Administration + a(href='#Help_90') - Help + h4 + a(href='#Query_Examples_94') QueryExamples + a(href='#Additional_Notes_115') Additional Notes + h5 + p(style='white-space:pre;') + a(href='#Standards_117') - Standards + a(href='#HTTPS_123') - HTTPS + h4 + a(href='#Support_126') Support + a(href='#License_135') License + h3 + a#Tech_10 + | Tech + hr + p + a(href='http://www.flowbat.com/') FlowBAT + | is written in Node.js using the Meteor framework. It is designed to work along side an existing + a(href='https://tools.netsa.cert.org/silk/') SiLK + | -based NetFlow system, or to be installed in conjunction with one. + a(href='http://www.flowbat.com/') FlowBAT + | was written with ease of installation and deployment in mind. + h3 + a#Installation_14 + | Installation + hr + p + | If you’re reading this, you probably already succeeded at installing + a(href='http://www.flowbat.com/') FlowBAT + | . However, if you are perhaps not the installer and are looking to check out what went into getting this running, check out the + a(href='http://www.flowbat.com/installation.html') installation + | documentation. It was probably just two scripts and maybe some manually configuration editing of sensor.conf and silk.conf. + h3 + a#Initial_Configuration_18 + | Initial Configuration + hr + h4 + a#SiLK_Site_Configuration_File_20 + | SiLK Site Configuration File + p + | This is the main configuration file that SiLK uses to interpret your sensor deployment. If you’ve installed using the scripts provided at + a(href='http://www.flowbat.com/') FlowBAT + | .com then it is /data/silk.conf + h4 + a#SiLK_Root_Directory_22 + | SiLK Root Directory + p + | This is the directory where you are storing flow data on the SiLK server. If you’ve installed using the scripts provided at + a(href='http://www.flowbat.com/') FlowBAT + | .com then it is /data/ + h4 + a#Temporary_Storage_Directory_24 + | Temporary Storage Directory + p + | This is where temporary files, sets, rwf files, and generally anything else that FlowBAT needs to make and use later will be stored. It is easy to want to use /tmp/ as the directory but due to how the filesystem cleans it up regularly, it is not recommended. Instead, create a directory that you can manually control if needed. + h3 + a#Basic_Usage_and_Best_Practices_27 + | Basic Usage and Best Practices + hr + p + a(href='http://www.flowbat.com/') FlowBAT + | can be used to search for flows, perform stats against user defined bins of flow data, or it can be used to count flows of a certain type and put them in timebased bins for a time based analysis. The record results are presented as a customizable table where columns can be moved around via mouse, and fields can be removed using selection boxes below the table. Single clicking a column will all data on the table in an ascending or descending order based on the column clicked. Every value in the table has a pivot capability when clicked. For instance, timestamps can be used to further customize the filter by adding a “Before/After 1 minute” to the filter simply by clicking and pivoting off of the user selected time in the table. IP addresses have lookup features in Robtex. More sources are being added via updates. + em Stats + | and + em Count + | output types can be presented as either a table or a chart. + em Stats + | is based on + a(href='https://tools.netsa.cert.org/silk/rwstats.html') rwstats + | and the tables have limited pivoting available for + em Stats Fields + | . + em Count + | is based on + a(href='https://tools.netsa.cert.org/silk/rwcount.html') rwcount + | and has static table output as well as line chart output. For more details on + em Stats + | and + em Count + | usage, see below. + h4 + a#Filters_31 + | Filters + p + | The most common usage of FlowBAT will be to use filters to search for specific flows from a SiLK datastore. The syntax for a query is implicitly “AND”, meaning that every record in a result will be a match of the combined result of all user provided options in the query. The goal is always to narrow down to smaller results via + em filters + | , and then you can do more specific carving using + em exclusions + | . Lets say that you are looking for traffic where either address is 192.168.1.15. Your filter will be as simple as: + pre + code + | --any-address=192.168.1.15 --type=all + p + | The + em any-address + | option says to look for 192.168.1.15 in source or destination IP address fields. The + em type + | option is an input option that states that we want to look in all forms of traffic whether it is inbound, outbound, or internal to internal traffic. In this case the + em type + | is redundant though due to liberties taken in FlowBAT to meet more common user use cases. We default to “all” for the + em type + | field. See “Other Notes” at the end of this documentation for more detail. + h4 + a#Exclusions_38 + | Exclusions + p + em Exclusions + | are used to narrow a filter’s results. Think of exclusions as doing an equal and opposite feature of filtering. Assume that you have a fair amount of SSH traffic and Google Hangouts traffic that is overwhelming a specific search. Hypothetically the following exclusion would remove records from the results that have [a source IP address of 192.168.1.15 and a source address of port 22] OR [UDP records with some local source IP addresses that looks like Google Hangouts traffic on ports 19302 through 19309]. You could write an exclusion as such: + pre + code + | --saddress=192.168.1.15 --sport=22 OR --protocol=17 --scidr=192.168.0.0/16 --dcidr=173.194.0.0/16,74.125.0.0/16 --aport=19302-19309 + p + | If you’re wanting to look for large groupings of IP addresses, you’ll want to generate IP sets. Please refer to the “IP Sets” section for more information. When filters alone won’t accomplish some goals of pulling very specific 5-tuple combinations, we allow the creation of 5-tuple files for use in the query builder. See “Tuple Files” for more information. + h4 + a#Stats_45 + | Stats + p + em Stats + | is based on + a(href='https://tools.netsa.cert.org/silk/rwstats.html') rwstats + | and is used to calculate top-n/bottom-n lists based on user definied fields and stat values. + em Stats + | is best explained via examples and the best practice is usually to try to put into words what you are looking for first. For instance, you are looking for the [top 10 sIP-dIP pairs by bytes]. In this case you would specify “Top”, “Count=10”, select Source IP and Dest IP as fields, and select “Bytes” as the + em Stats Value + | . Multiple + em Stats Values + | can be selected as long as the value does not match the field being searched for. In the event that you are pulling muliple stat values, you’ll want to select the *Primary Stats Value" that is most important to you. The other fields will be supplementary information, but will not be the main values being used to calculate against. + p + | Table output allows for pivoting on certain + em stats fields + | but not on + em stats values + | . You can select between bar, column, and pie charts for the chart display. The chart uses a logarithmic scale due to the widely varying values when using multiple + em stats values + h4 + a#Count_40 + | Count + p + em Count + | is based on + a(href='https://tools.netsa.cert.org/silk/rwcount.html') rwcount + | and is used to summarize flow records over time, grouping record, byte, and packet counts into time bins of a user defined duration. Each row in the table output each data point on the line chart output represents one bin. If the user uses a 60 second bin size (the default is 30 seconds) this means that the total number of records/minute, bytes/minute, and packets/minute. Special considerations need to be taken when making charts with rwcount. If the time range specified is incredible long and the bin size is unreasonably small for that range, the chart will take a long time to create and it will be illegible if it actually appears. This is because you are loading the entire dataset onto one chart. + h4 + a#IP_Sets_53 + | IP Sets + p + em IP Sets + | are user defined lists of IP addresses that can be edited in the “IP Sets” tab in the navbar at the top of the screen. There you will create an IP set that can be IP addresses, CIDR ranges, or combinations of the two. Saving the results will allow you to specify those sets in the query builder under the “host” subheading. As before, selecting + em any IP set + | will add the + em anyset + | option to the query. That option looks for any match from the sets, regardless if they occur as the source or destination IP address. + h4 + a#Tuple_Files_56 + | Tuple Files + p + em Tuple Files + | allow you to specify up to an entire 5-tuple to search for, and by default it will search in any direction. This means that if you choose to only look for communications between two addresses, you can specify them in the file as something like “192.168.1.15,8.8.8.8”. You can save as many tuples as you would like in the file (just as you did in IP Sets), but specifying the options in the query builder is slightly more complex to give you more power in filtering. Under the “additional options” subheading in the query builder you’ll find Tuple File, Tuple Direction, Tuple Delimiter, and Tuple Fields. After selecting the tuple file that you’ve created, the tuple direction refers to what order you wish to search in. Selecting “both” will search for any occurence of the tuple elements regardless of where they appear in the individual record. This is the most common use case as it accomplishes a task that isn’t easily specified in default options. After specifying direction, you need to tell FlowBAT how the tuple file is formatted. Provide the delimiter that you chose (in this example we are using a comma + strong , + | ), and tell FlowBAT what the elements are in the tuple. In this case, we can say + strong sip,dip + | . If we’ve chosen the tuple direction to be both, this really just implies that both of the values are IP addresses. Had we chosen otherwise, the sip,dip would have more meaning. Also, had we provided the full 5-tuple we might have used + strong sip,dip,sport,dport,protocol + | to define the tuple fields. + h4 + a#PCAP_Analysis + | PCAP Analysis + p + | PCAP analysis can be performed in FlowBAT by specifying the full path of the file at either the command line FlowBAT interface or the "Additional Options" tab. See the examples at the end of this documentation for more details. + pre + code + | /home/jason/badguys.pcap --saddress=192.168.1.15 --aport=31337 + h4 + a#RWF_Analysis + | RWF Analysis + p + | RWF files are the binary files that SiLK tools operate on. These can also be created at the command line in cases where automation might be desired. If you need to review an rwf file in FlowBAT, simply specify it prior to the rest of the filter. + pre + code + | /home/jason/IOT.rwf --type=out,outweb --packets=4- --ack-flag=1 + h3 + a#Layout_59 + | Layout + hr + p + a(href='http://www.flowbat.com/') FlowBAT + | was created to be a more user-friendly frontend for the SiLK flow analysis tool suite. Seasoned professionals will notice that many tools are not immediately available to use, but instead have been packaged together in an effort to meet the most common SiLK analysis use-cases. + a(href='http://www.flowbat.com/') FlowBAT + | allows the user to search and filter for flow data as well as run statistics based on the outputs. The main FlowBAT Interface is divided into six main sections: + ul + li Dashboard + li Quick Query + li Saved Queries + li IP Sets + li Tuple Files + li Configuration Settings + h4 + a#Dashboard_69 + | Dashboard + p + | If this is your first time booting up + a(href='http://www.flowbat.com/') FlowBAT + | you might notice that the dashboard is a plain canvas. This is a place to put the output of saved queries. Those outputs might be bandwidth graphs or tables of records with interactions with malicious IP sets, or generally just anything you want. In order to make them actionable in a dashboard, you’ll want to make sure that the outputs are updated, so make sure that the intended queries have rolling times and periodic execution. At the top of the Dashboard is a quick query command interface input. This input allows for running a search spontaneously without navigating manually to other tabs. For the query builder, you will need to go to + em quick query + | or + em saved queries + | . + h4 + a#Quick_Query_72 + | Quick Query + p + | Running a quick query is useful when you are just doing some regular hunting or providing situational awareness upon request. If it is something that you don’t think that you will keep, then quick query is the place to go. However, in the event that you just love something you’ve found, you can go ahead and make it a saved query on the fly from the quick query page. In the event that you cannot filter exactly how you want, or perhaps there is an outlier that you also want removed, you can also provide “exclusions” which will remove data from your results. See “Basic Usage and Best Practices”. There is also a query builder that provides individual descriptions and input fields for those not verse in SiLK syntax already. Each input contains a help bubble that can assist in understanding what fields mean. Upon adding fields in the query builder, the full SiLK query itself (in red) is populated below the input parameters. New users can take note of the syntax to ween themselves off of the query builder and opt to make use of quick query for a more streamlined experience. + h4 + a#Saved_Queries_75 + | Saved Queries + p + | The + em Saved Queries + | tab shows all queries that you have saved. This tab also provides the actual SiLK queries needed to replicate from the command line on the server itself (useful for those wanting to learn SiLK syntax and run automated tasks against flow data). Query names in this list are referenced when selecting outputs to display on the dashboard. + h4 + a#IP_Sets_78 + | IP Sets + p + | Here you can create an IP set that can be IP addresses, CIDR ranges, or combinations of the two. Saving the results will allow you to specify those sets in the query builder under the “host” subheading. When creating IP sets it is recommended that you leave a note descibing the set and have a unique IP set name. The name will be referenced in the query builder. See “Basic Usage and Best Practices” for more details. + h4 + a#Tuple_Files_81 + | Tuple Files + p + | Here you can create a tuple file (see “Basic Usage and Best Practices” for more details on these unique files). Saving the results will allow you to specify those tuples in the query builder under the “Additional options” subheading. When creating tuple files it is recommended that you leave a note descibing the file and have a unique name. The name will be referenced in the query builder. See “Basic Usage and Best Practices” for more details. + h4 + a#Night_Mode + | Night Mode + p + | Night Mode changes the visual theme of FlowBAT to make it easier on the eyes in darker environments. Simple click the sun/moon symbol to toggle. Night Mode is only available on webkit enabled browsers (Chrome, Safari, Opera). + h4 + a#Configuration_Settings_84 + | Configuration Settings + p These are options available to all users. + h5 + a#User_Administration_86 + | - User Administration + p Add, remove, or edit users. + h5 + a#SiLK_Server_Administration_88 + | - SiLK Server Administration + p + | Change initial FlowBAT configuration options such as silk.conf location, data directory, temporary storage directory, and SSH options. See “Initial Configuration” for more details. + h5 + a#Help_90 + | - Help + p You are here. + h3 + a#Query_Examples_94 + | Query Examples + hr + p + | Search for all records with IP address 192.168.1.15 as either source IP or dest IP + pre + code + | Filter: --any-address=192.168.1.15 + p Search for 192.168.1.15 but only show outbound flows + pre + code + | Filter: --any-address=192.168.1.15 --type=out,outweb + p Look at the top 10 source-dest ip pairs with stats by bytes + pre + code + | Filter: --protocol=0-255 + | Stats: --top --count=10 --fields=sip,dip --values=bytes + p + | Look at the top 10 list of destination country codes for outbound traffic by packets, excluding the United States, Great Britain, and private IP space + pre + code + | Filter: --protocol=0-255 --type=out,outweb + | Exclusion: --dcc=US,GB,-- + | Stats: --top --count=10 --fields=dcc --values=packets + p + | Examine a pre-made RWF file of IoT traffic to determine how much outbound data is traversing the network. + pre + code + | Filter: /home/jason/IOT.rwf --type=out,outweb --packets=4- --ack-flag=1 + | Count: --bin-size=60 + p + | Examine a PCAP file to generate a list of the top talking sip-dip pairs by bytes. + pre + code + | Filter: /home/jason/badguys.pcap --protocol=0-255 + | Stats --top --count=10 --fields=sip,dip --values=bytes + + h3 + a#Additional_Notes_115 + | Additional Notes + hr + h4 + a#Standards_117 + | Standards + p + a(href='http://www.flowbat.com/') FlowBAT + | makes every attempt at keeping most of the standards set by + a(href='https://tools.netsa.cert.org/silk/') SiLK + | and only deviates when it is in the analysts best interest. The most significant change is regarding the + em type + | default values when creating a filter. If you’re a veteran of SiLK you’ll probably know that SiLK defaults to incoming traffic as per the + a(href='https://tools.netsa.cert.org/silk/rwfilter.html') rwfilter + | documentation: + blockquote + p + | The default-type list is determined by the value of CLASS, and the default types generally include only incoming traffic. + p + | In our experience analysts generally intend to start searching by looking through all flows collected and as such + strong + | we have made “all” the default value for + em type + | . + h4 + a#HTTPS_123 + | HTTPS + p + | We have also provided a script in the support folder of the project that allows the user to quickly set up an nginx proxy for https access. This script is only meant to ensure that connections made to FlowBAT are encrypted, but as with any security measures, you should customize the proxy configuration to your own liking if you desire any more than what is described here. + h3 + a#Support_126 + | Support + hr + p + | Don’t hesitate to email + a(href='support@flowbat.com') support + | if you have any questions or feature requests about + a(href='http://www.flowbat.com/') FlowBAT + | . You can also submit + a(href='https://github.com/chrissanders/FlowBAT/issues') issues + | if you feel inclined to submit bugs or requests via github. + p + | For more information on + a(href='https://tools.netsa.cert.org/silk/') SiLK + | please see the [SiLK documentation] and for tool specific documentation, see the following + ul + li + a(href='https://tools.netsa.cert.org/silk/rwfilter.html') rwfilter + li + a(href='https://tools.netsa.cert.org/silk/rwstats.html') rwstats + li + a(href='https://tools.netsa.cert.org/silk/rwcount.html') rwcount + h3 + a#License_135 + | License + p + | Refer to the + a(href='https://github.com/chrissanders/FlowBAT/blob/master/LICENSE.md') license + | on the project page. diff --git a/client/templates/navbar/navbar.css.styl b/client/templates/navbar/navbar.css.styl index 6b89553..a4c8caa 100644 --- a/client/templates/navbar/navbar.css.styl +++ b/client/templates/navbar/navbar.css.styl @@ -1,2 +1,6 @@ .navbar-brand padding 5px +#nightMode + display none + &:not(*:root) + display block diff --git a/client/templates/navbar/navbar.html.jade b/client/templates/navbar/navbar.html.jade index 30a1cf0..3150e71 100644 --- a/client/templates/navbar/navbar.html.jade +++ b/client/templates/navbar/navbar.html.jade @@ -40,3 +40,5 @@ template(name="navbar") li: a.logout(href="#") Logout else +login + ul.nav.navbar-nav.navbar-right + a.btn.btn-primary#nightMode(href="javascript:(function(){var css='html {-webkit-filter: invert(100%);'+'-moz-filter: invert(100%);'+'-o-filter: invert(100%);'+'-ms-filter: invert(100%); }body{background:#1B1815}',head=document.getElementsByTagName('head')[0],style=document.createElement('style');if(!window.counter){window.counter=1;}else{window.counter++;if(window.counter%2==0){var css='html {-webkit-filter: invert(0%); -moz-filter: invert(0%); -o-filter: invert(0%); -ms-filter: invert(0%); }body{background:#E4E7EA}'}};style.type='text/css';if(style.styleSheet){style.styleSheet.cssText=css;}else{style.appendChild(document.createTextNode(css));}head.appendChild(style);})();" style="margin-top: 0.5em; margin-right: 0.5em; ") / diff --git a/client/templates/navbar/navbar.js.coffee b/client/templates/navbar/navbar.js.coffee index e3aa1df..454fa65 100644 --- a/client/templates/navbar/navbar.js.coffee +++ b/client/templates/navbar/navbar.js.coffee @@ -1,7 +1,7 @@ Template.navbar.helpers Template.navbar.rendered = -> - +Blaze._allowJavascriptUrls() Template.navbar.events "click .create-quick-query": grab (event, template) -> _id = share.Queries.insert( @@ -10,4 +10,3 @@ Template.navbar.events Router.go("/query/" + _id) "click .logout": grab (event, template) -> Meteor.logout() - diff --git a/client/templates/results/fieldsets/fieldsets.html.jade b/client/templates/results/fieldsets/fieldsets.html.jade index 55d4fcf..7ed0e4b 100644 --- a/client/templates/results/fieldsets/fieldsets.html.jade +++ b/client/templates/results/fieldsets/fieldsets.html.jade @@ -309,7 +309,7 @@ template(name="fieldsets") if condition output "is" "rwstats" fieldset.rwstats-parameters legend Stats parameters - i.fa.fa-question-circle.text-muted(data-toggle="popover", title="rwstats fields", data-content="These parameters determine how the statistics are to be calculated by selecting Top-N or Bottom-N, and a value to limit the amount of output. Count sets a static limit (top 20 for instance), threshold outputs all results over/under a specific stats VALUE, and percentage prints the bins where the primary value is greater-than (or less-than) N percent of the sum of the primary values across all bins.") + i.fa.fa-question-circle.text-muted(data-toggle="popover", title="Stats Parameters", data-content="These parameters determine how the statistics are to be calculated by selecting Top-N or Bottom-N, and a value to limit the amount of output. Count sets a static limit (top 20 for instance), threshold outputs all results over/under a specific stats VALUE, and percentage prints the bins where the primary value is greater-than (or less-than) N percent of the sum of the primary values across all bins.") .row .col-xs-2 .input-group.direction-input-group @@ -359,7 +359,7 @@ template(name="fieldsets") .col-xs-12 each rwstatsFieldsOrder .checkbox - label + label(data-toggle="popover", title="{{t fieldI18nString}}", data-content="{{t fieldDefinitions}}") input.field-checkbox(type="checkbox", checked="{{fieldIsSelected .. 'rwstatsFields'}}", value="{{.}}", data-property="rwstatsFields") | {{t fieldI18nString}} fieldset.display-fields-block @@ -369,7 +369,7 @@ template(name="fieldsets") .col-xs-12 each rwstatsValuesOrder .checkbox - label + label(data-toggle="popover", title="{{t fieldI18nString}}", data-content="{{t fieldDefinitions}}") input.field-checkbox(type="checkbox", checked="{{fieldIsSelected .. 'rwstatsValues'}}", value="{{.}}", data-property="rwstatsValues") if condition . "in" share.rwstatsValues strong {{t fieldI18nString}} diff --git a/client/templates/results/results.html.jade b/client/templates/results/results.html.jade index 0b6fa40..6e34199 100644 --- a/client/templates/results/results.html.jade +++ b/client/templates/results/results.html.jade @@ -96,6 +96,6 @@ template(name="results") legend Display fields each fieldsOrder .checkbox - label + label(data-toggle="popover", title="{{t fieldI18nString}}", data-content="{{t fieldDefinitions}}") input.field-checkbox(type="checkbox", checked="{{fieldIsSelected .. 'fields'}}", value="{{.}}", data-property="fields") | {{t fieldI18nString}} diff --git a/lib/app.coffee b/lib/app.coffee index 20bf911..4caa98f 100644 --- a/lib/app.coffee +++ b/lib/app.coffee @@ -155,7 +155,7 @@ share.filterOptions = (options, additionalPermittedCharacters = "") -> for excludedOption in ["--python-expr", "--python-file", "--pmap", "--dynamic-library", "--all-destination", "--fail-destination", "--pass-destination", "--print-statistics", "--print-volume-statistics", "--xargs"] regexp = new RegExp(excludedOption + "=?[^\\s]*", "gi") options = options.replace(regexp, "") - filter = new RegExp("[^\\s\\=\\-\\/\\,\\.\\:0-9a-z" + additionalPermittedCharacters + "]", "gi") + filter = new RegExp("[^\\s\\=\\-\\/\\,\\.\\:0-9a-z_" + additionalPermittedCharacters + "]", "gi") options = options.replace(filter, "") options diff --git a/lib/transformations.coffee b/lib/transformations.coffee index f8eb850..0dd14f1 100644 --- a/lib/transformations.coffee +++ b/lib/transformations.coffee @@ -80,15 +80,26 @@ class share.Query inputCommand: (config, profile, isPresentation = false) -> command = "rwfilter" command += " " + @inputOptions(config) - + # defaults to having --type=all as the standard instead of the SiLK default. + if @interface is "cmd" + typeValidate = command.search(RegExp('--type', 'i')) + if typeValidate < 0 + command += " --type=all " if config.siteConfigFile command += " --site-config-file=" + config.siteConfigFile - rwFileValidate = command.search(RegExp(' (\\/|\\w)+\\.(rwf|rw)', 'i')) - + # rwf and pcap integration + rwFileValidate = command.search(RegExp(' (\\/|\\w)+(\\/|\\w|\\-)*\\.(rwf|rw)', 'i')) if rwFileValidate < 0 - if config.dataRootdir - command += " --data-rootdir=" + config.dataRootdir - + pcapFileValidate = command.search(RegExp(' (\\/|\\w)+(\\/|\\w|\\-)*\\.(pcap)', 'i')) + if pcapFileValidate >= 0 + pcapFile = command.match(RegExp('(\\/|\\w)+(\\/|\\w|\\-)*\\.(pcap)', 'i')) + command += " --input-pipe=stdin" + command = command.replace(pcapFile[0],"") + command = "rwp2yaf2silk --in=" + pcapFile[0] + " --out=- |" + command + else + if config.dataRootdir + command += " --data-rootdir=" + config.dataRootdir + command += " --pass=stdout" for exclusion in @inputExclusions() command += " | rwfilter --input-pipe=stdin" diff --git a/private/bundle/programs/server/app/lib/app.coffee.js b/private/bundle/programs/server/app/lib/app.coffee.js index c221193..9cf31bb 100644 --- a/private/bundle/programs/server/app/lib/app.coffee.js +++ b/private/bundle/programs/server/app/lib/app.coffee.js @@ -89,7 +89,7 @@ share.filterOptions = function(options, additionalPermittedCharacters) { regexp = new RegExp(excludedOption + "=?[^\\s]*", "gi"); options = options.replace(regexp, ""); } - filter = new RegExp("[^\\s\\=\\-\\/\\,\\.\\:0-9a-z" + additionalPermittedCharacters + "]", "gi"); + filter = new RegExp("[^\\s\\=\\-\\/\\,\\.\\:0-9a-z_" + additionalPermittedCharacters + "]", "gi"); options = options.replace(filter, ""); return options; }; diff --git a/private/bundle/programs/server/app/lib/app.coffee.js.map b/private/bundle/programs/server/app/lib/app.coffee.js.map index 23f8f2d..7f81a45 100644 --- a/private/bundle/programs/server/app/lib/app.coffee.js.map +++ b/private/bundle/programs/server/app/lib/app.coffee.js.map @@ -1 +1 @@ -{"version":3,"sources":["app.coffee"],"names":[],"mappings":";AAAA;;AAAA,QAAQ,SAAS,EAAjB;;AAAA,KAOK,CAAC,IAAN,GAAa,SAAC,MAAD,EAAS,MAAT;;IAAS,SAAS,MAAM,CAAC,MAAP;GAC7B;SAAA,MAAM,CAAC,KAAK,CAAC,OAAb,CAAqB,MAArB,EAA6B;AAAA,IAAC,QAAQ,MAAT;GAA7B,EADW;AAAA,CAPb;;AAAA,KAUK,CAAC,MAAN,GAAe,SAAC,KAAD;SACb,SAAS,KAAT,EAAgB,EAAhB,KAAuB,EADV;AAAA,CAVf;;AAAA,KAaK,CAAC,MAAN,GAAe,KAAK,IAbpB;;AAAA,KAcK,CAAC,IAAN,GAAa,KAAK,KAAK,CAAC,MAdxB;;AAAA,KAgBK,CAAC,cAAN,GAAuB,yBAhBvB;;AAAA,KAiBK,CAAC,WAAN,GAAoB,CAClB,KADkB,EAElB,KAFkB,EAGlB,OAHkB,EAIlB,OAJkB,EAKlB,UALkB,EAMlB,SANkB,EAOlB,OAPkB,EAQlB,OARkB,EASlB,OATkB,EAUlB,UAVkB,EAWlB,OAXkB,EAYlB,QAZkB,EAalB,OAbkB,EAclB,KAdkB,EAelB,KAfkB,EAgBlB,cAhBkB,EAiBlB,cAjBkB,EAkBlB,aAlBkB,EAmBlB,MAnBkB,EAoBlB,cApBkB,CAjBpB;;AAAA,KAuCK,CAAC,aAAN,GAAsB,CACpB,SADoB,EAEpB,SAFoB,EAGpB,OAHoB,CAvCtB;;AAAA,KA4CK,CAAC,aAAN,GAAsB,CACpB,MADoB,EAEpB,SAFoB,EAGpB,OAHoB,EAIpB,SAJoB,CA5CtB;;AAAA,KAkDK,CAAC,kBAAN,GAA2B,CACzB,EADyB,EAEzB,aAFyB,EAGzB,aAHyB,EAIzB,WAJyB,EAKzB,cALyB,EAMzB,mBANyB,EAOzB,gBAPyB,EAQzB,gBARyB,CAlD3B;;AAAA,KA4DK,CAAC,eAAN,GAAwB,CACtB,EADsB,EAEtB,MAFsB,EAGtB,SAHsB,EAItB,SAJsB,CA5DxB;;AAAA,KAkEK,CAAC,mBAAN,GACE;AAAA,WAAS,EAAT;AAAA,EACA,WAAW,CAAC,UAAD,EAAa,aAAb,EAA6B,UAA7B,CADX;AAAA,EAEA,WAAW,CAAC,WAAD,CAFX;CAnEF;;AAAA,KAsEK,CAAC,eAAN,GACE;AAAA,WAAS,QAAT;AAAA,EACA,SAAS,QADT;AAAA,EAEA,YAAY,QAFZ;AAAA,EAGA,OAAO,QAHP;AAAA,EAIA,WAAW,QAJX;AAAA,EAKA,SAAS,QALT;AAAA,EAMA,SAAS,UANT;AAAA,EAOA,YAAY,QAPZ;AAAA,EAQA,OAAO,QARP;AAAA,EASA,SAAS,UATT;AAAA,EAUA,WAAW,QAVX;AAAA,EAWA,WAAW,QAXX;AAAA,EAYA,SAAS,QAZT;AAAA,EAaA,QAAQ,UAbR;AAAA,EAcA,WAAW,QAdX;CAvEF;;AAAA,KAsFK,CAAC,gBAAN,GACE;AAAA,UAAS,EAAD,CAAI,CAAC,QAAL,EAAR;AAAA,EACA,OAAO,CAAC,KAAK,EAAN,CAAS,CAAC,QAAV,EADP;AAAA,EAEA,QAAQ,CAAC,IAAI,EAAJ,GAAS,EAAV,CAAa,CAAC,QAAd,EAFR;AAAA,EAGA,SAAS,CAAC,KAAK,EAAL,GAAU,EAAX,CAAc,CAAC,QAAf,EAHT;CAvFF;;AAAA,KA4FK,CAAC,WAAN,GAAoB,SAAC,MAAD;AAClB;AAAA,SAAO,EAAP;AACA;AAAA;mBAAA;AACE,QAAI,CAAC,IAAL,CAAU,GAAG,CAAC,KAAJ,CAAU,GAAV,CAAV,EADF;AAAA,GADA;SAGA,KAJkB;AAAA,CA5FpB;;AAAA,KAkGK,CAAC,UAAN,GAAmB,CAAC,IAAD,EAAO,KAAP,EAAc,OAAd,EAAuB,QAAvB,EAAiC,QAAjC,EAA2C,SAA3C,EAAsD,QAAtD,EAAgE,SAAhE,EAA2E,SAA3E,EAAsF,SAAtF,EAAiG,OAAjG,CAlGnB;;AAAA,KAmGK,CAAC,WAAN,GAAoB,CAClB,WADkB,EAElB,KAFkB,EAGlB,eAHkB,EAIlB,kBAJkB,EAKlB,WALkB,EAMlB,gBANkB,EAOlB,SAPkB,EAQlB,eARkB,EASlB,QATkB,EAUlB,cAVkB,EAWlB,OAXkB,EAYlB,iBAZkB,EAalB,UAbkB,EAclB,iBAdkB,EAelB,UAfkB,EAgBlB,mBAhBkB,EAiBlB,YAjBkB,EAkBlB,eAlBkB,EAmBlB,QAnBkB,EAoBlB,eApBkB,EAqBlB,QArBkB,EAsBlB,eAtBkB,EAuBlB,QAvBkB,EAwBlB,kBAxBkB,EAyBlB,WAzBkB,EA0BlB,uBA1BkB,EA2BlB,gBA3BkB,EA4BlB,uBA5BkB,EA6BlB,gBA7BkB,EA8BlB,oBA9BkB,EA+BlB,aA/BkB,EAgClB,cAhCkB,EAiClB,OAjCkB,EAkClB,cAlCkB,EAmClB,OAnCkB,EAoClB,cApCkB,EAqClB,OArCkB,EAsClB,YAtCkB,EAuClB,KAvCkB,EAwClB,YAxCkB,EAyClB,KAzCkB,EA0ClB,iBA1CkB,EA2ClB,UA3CkB,EA4ClB,iBA5CkB,EA6ClB,UA7CkB,EA8ClB,mBA9CkB,EA+ClB,YA/CkB,EAgDlB,6BAhDkB,EAiDlB,sBAjDkB,EAkDlB,gCAlDkB,EAmDlB,yBAnDkB,CAnGpB;;AAAA,KAyJK,CAAC,aAAN,GAAsB,SAAC,OAAD,EAAU,6BAAV;AACpB;;IAD8B,gCAAgC;GAC9D;AAAA;AAAA;8BAAA;AACE,aAAa,WAAO,iBAAiB,WAAxB,EAAqC,IAArC,CAAb;AAAA,IACA,UAAU,OAAO,CAAC,OAAR,CAAgB,MAAhB,EAAwB,EAAxB,CADV,CADF;AAAA;AAAA,EAGA,SAAa,WAAO,kCAAkC,6BAAlC,GAAkE,GAAzE,EAA8E,IAA9E,CAHb;AAAA,EAIA,UAAU,OAAO,CAAC,OAAR,CAAgB,MAAhB,EAAwB,EAAxB,CAJV;SAKA,QANoB;AAAA,CAzJtB;;AAAA,KAiKK,CAAC,OAAN,GAAgB,MAAM,CAAC,QAAQ,CAAC,QAAD,CAAO,CAAC,OAjKvC;;AAAA,MAmKA,GAAY,kBAAkB,WAArB,GAAsC,MAAtC,GAAkD,MAnK3D;;AAAA,MAoKM,CAAC,OAAP,GAAiB,KAAK,CAAC,OApKvB;;AAqKA,IAAG,mBAAmB,WAAnB,IAAkC,OAAO,CAAC,GAA1C,IAAiD,CAAC,CAAC,UAAF,CAAa,OAAO,CAAC,GAArB,CAApD;AACE,QAAM,CAAC,EAAP,GAAY,CAAC,CAAC,IAAF,CAAO,OAAO,CAAC,GAAf,EAAoB,OAApB,CAAZ,CADF;CAAA;AAGE,QAAM,CAAC,EAAP,GAAY,aAAZ,CAHF;CArKA","file":"/lib/app.coffee.js","sourcesContent":["share = share or {}\n\n#share.combine = (funcs...) ->\n# (args...) =>\n# for func in funcs\n# func.apply(@, args)\n\nshare.user = (fields, userId = Meteor.userId()) ->\n Meteor.users.findOne(userId, {fields: fields})\n\nshare.intval = (value) ->\n parseInt(value, 10) || 0\n\nshare.minute = 60 * 1000\nshare.hour = 60 * share.minute\n\nshare.datetimeFormat = \"YYYY/MM/DD HH:mm:ss.SSS\"\nshare.rwcutFields = [\n \"sIP\"\n \"dIP\"\n \"sPort\"\n \"dPort\"\n \"protocol\"\n \"packets\"\n \"bytes\"\n \"flags\"\n \"sTime\"\n \"duration\"\n \"eTime\"\n \"sensor\"\n \"class\"\n \"scc\"\n \"dcc\"\n \"initialFlags\"\n \"sessionFlags\"\n \"application\"\n \"type\"\n \"icmpTypeCode\"\n]\nshare.rwstatsValues = [\n \"Records\"\n \"Packets\"\n \"Bytes\"\n]\nshare.rwcountFields = [\n \"Date\"\n \"Records\"\n \"Bytes\"\n \"Packets\"\n]\nshare.rwcountLoadSchemes = [\n \"\"\n \"bin-uniform\"\n \"start-spike\"\n \"end-spike\"\n \"middle-spike\"\n \"time-proportional\"\n \"maximum-volume\"\n \"minimum-volume\"\n]\nshare.tupleDirections = [\n \"\"\n \"both\"\n \"forward\"\n \"reverse\"\n]\nshare.availableChartTypes =\n \"rwcut\": []\n \"rwstats\": [\"BarChart\", \"ColumnChart\", \"PieChart\"]\n \"rwcount\": [\"LineChart\"]\nshare.chartFieldTypes =\n \"sPort\": \"number\"\n \"dPort\": \"number\"\n \"protocol\": \"number\"\n \"pro\": \"number\"\n \"packets\": \"number\"\n \"bytes\": \"number\"\n \"sTime\": \"datetime\"\n \"duration\": \"number\"\n \"dur\": \"number\"\n \"eTime\": \"datetime\"\n \"Records\": \"number\"\n \"Packets\": \"number\"\n \"Bytes\": \"number\"\n \"Date\": \"datetime\"\n \"cumul_%\": \"number\"\nshare.startDateOffsets =\n \"Hour\": (60).toString()\n \"Day\": (24 * 60).toString()\n \"Week\": (7 * 24 * 60).toString()\n \"Month\": (30 * 24 * 60).toString()\n\nshare.parseResult = (result) ->\n rows = []\n for row in result.split(\"\\n\")\n rows.push(row.split(\"|\"))\n rows\n\nshare.queryTypes = [\"in\", \"out\", \"inweb\", \"outweb\", \"inicmp\", \"outicmp\", \"innull\", \"outnull\", \"int2int\", \"ext2ext\", \"other\"]\nshare.inputFields = [\n \"interface\"\n \"cmd\"\n \"exclusionsCmd\"\n \"startDateEnabled\"\n \"startDate\"\n \"endDateEnabled\"\n \"endDate\"\n \"sensorEnabled\"\n \"sensor\"\n \"typesEnabled\"\n \"types\"\n \"daddressEnabled\"\n \"daddress\"\n \"saddressEnabled\"\n \"saddress\"\n \"anyAddressEnabled\"\n \"anyAddress\"\n \"dipSetEnabled\"\n \"dipSet\"\n \"sipSetEnabled\"\n \"sipSet\"\n \"anySetEnabled\"\n \"anySet\"\n \"tupleFileEnabled\"\n \"tupleFile\"\n \"tupleDirectionEnabled\"\n \"tupleDirection\"\n \"tupleDelimiterEnabled\"\n \"tupleDelimiter\"\n \"tupleFieldsEnabled\"\n \"tupleFields\"\n \"dportEnabled\"\n \"dport\"\n \"sportEnabled\"\n \"sport\"\n \"aportEnabled\"\n \"aport\"\n \"dccEnabled\"\n \"dcc\"\n \"sccEnabled\"\n \"scc\"\n \"protocolEnabled\"\n \"protocol\"\n \"flagsAllEnabled\"\n \"flagsAll\"\n \"activeTimeEnabled\"\n \"activeTime\"\n \"additionalParametersEnabled\"\n \"additionalParameters\"\n \"additionalExclusionsCmdEnabled\"\n \"additionalExclusionsCmd\"\n]\n\nshare.filterOptions = (options, additionalPermittedCharacters = \"\") ->\n for excludedOption in [\"--python-expr\", \"--python-file\", \"--pmap\", \"--dynamic-library\", \"--all-destination\", \"--fail-destination\", \"--pass-destination\", \"--print-statistics\", \"--print-volume-statistics\", \"--xargs\"]\n regexp = new RegExp(excludedOption + \"=?[^\\\\s]*\", \"gi\")\n options = options.replace(regexp, \"\")\n filter = new RegExp(\"[^\\\\s\\\\=\\\\-\\\\/\\\\,\\\\.\\\\:0-9a-z\" + additionalPermittedCharacters + \"]\", \"gi\")\n options = options.replace(filter, \"\")\n options\n\nshare.isDebug = Meteor.settings.public.isDebug\n\nobject = if typeof(window) != \"undefined\" then window else GLOBAL\nobject.isDebug = share.isDebug\nif typeof(console) != \"undefined\" && console.log && _.isFunction(console.log)\n object.cl = _.bind(console.log, console)\nelse\n object.cl = ->\n"]} \ No newline at end of file +{"version":3,"sources":["app.coffee"],"names":[],"mappings":"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","file":"/lib/app.coffee.js","sourcesContent":["share = share or {}\n\n#share.combine = (funcs...) ->\n# (args...) =>\n# for func in funcs\n# func.apply(@, args)\n\nshare.user = (fields, userId = Meteor.userId()) ->\n Meteor.users.findOne(userId, {fields: fields})\n\nshare.intval = (value) ->\n parseInt(value, 10) || 0\n\nshare.minute = 60 * 1000\nshare.hour = 60 * share.minute\n\nshare.datetimeFormat = \"YYYY/MM/DD HH:mm:ss.SSS\"\nshare.rwcutFields = [\n \"sIP\"\n \"dIP\"\n \"sPort\"\n \"dPort\"\n \"protocol\"\n \"packets\"\n \"bytes\"\n \"flags\"\n \"sTime\"\n \"duration\"\n \"eTime\"\n \"sensor\"\n \"class\"\n \"scc\"\n \"dcc\"\n \"initialFlags\"\n \"sessionFlags\"\n \"application\"\n \"type\"\n \"icmpTypeCode\"\n]\nshare.rwstatsValues = [\n \"Records\"\n \"Packets\"\n \"Bytes\"\n]\nshare.rwcountFields = [\n \"Date\"\n \"Records\"\n \"Bytes\"\n \"Packets\"\n]\nshare.rwcountLoadSchemes = [\n \"\"\n \"bin-uniform\"\n \"start-spike\"\n \"end-spike\"\n \"middle-spike\"\n \"time-proportional\"\n \"maximum-volume\"\n \"minimum-volume\"\n]\nshare.tupleDirections = [\n \"\"\n \"both\"\n \"forward\"\n \"reverse\"\n]\nshare.availableChartTypes =\n \"rwcut\": []\n \"rwstats\": [\"BarChart\", \"ColumnChart\", \"PieChart\"]\n \"rwcount\": [\"LineChart\"]\nshare.chartFieldTypes =\n \"sPort\": \"number\"\n \"dPort\": \"number\"\n \"protocol\": \"number\"\n \"pro\": \"number\"\n \"packets\": \"number\"\n \"bytes\": \"number\"\n \"sTime\": \"datetime\"\n \"duration\": \"number\"\n \"dur\": \"number\"\n \"eTime\": \"datetime\"\n \"Records\": \"number\"\n \"Packets\": \"number\"\n \"Bytes\": \"number\"\n \"Date\": \"datetime\"\n \"cumul_%\": \"number\"\nshare.startDateOffsets =\n \"Hour\": (60).toString()\n \"Day\": (24 * 60).toString()\n \"Week\": (7 * 24 * 60).toString()\n \"Month\": (30 * 24 * 60).toString()\n\nshare.parseResult = (result) ->\n rows = []\n for row in result.split(\"\\n\")\n rows.push(row.split(\"|\"))\n rows\n\nshare.queryTypes = [\"in\", \"out\", \"inweb\", \"outweb\", \"inicmp\", \"outicmp\", \"innull\", \"outnull\", \"int2int\", \"ext2ext\", \"other\"]\nshare.inputFields = [\n \"interface\"\n \"cmd\"\n \"exclusionsCmd\"\n \"startDateEnabled\"\n \"startDate\"\n \"endDateEnabled\"\n \"endDate\"\n \"sensorEnabled\"\n \"sensor\"\n \"typesEnabled\"\n \"types\"\n \"daddressEnabled\"\n \"daddress\"\n \"saddressEnabled\"\n \"saddress\"\n \"anyAddressEnabled\"\n \"anyAddress\"\n \"dipSetEnabled\"\n \"dipSet\"\n \"sipSetEnabled\"\n \"sipSet\"\n \"anySetEnabled\"\n \"anySet\"\n \"tupleFileEnabled\"\n \"tupleFile\"\n \"tupleDirectionEnabled\"\n \"tupleDirection\"\n \"tupleDelimiterEnabled\"\n \"tupleDelimiter\"\n \"tupleFieldsEnabled\"\n \"tupleFields\"\n \"dportEnabled\"\n \"dport\"\n \"sportEnabled\"\n \"sport\"\n \"aportEnabled\"\n \"aport\"\n \"dccEnabled\"\n \"dcc\"\n \"sccEnabled\"\n \"scc\"\n \"protocolEnabled\"\n \"protocol\"\n \"flagsAllEnabled\"\n \"flagsAll\"\n \"activeTimeEnabled\"\n \"activeTime\"\n \"additionalParametersEnabled\"\n \"additionalParameters\"\n \"additionalExclusionsCmdEnabled\"\n \"additionalExclusionsCmd\"\n]\n\nshare.filterOptions = (options, additionalPermittedCharacters = \"\") ->\n for excludedOption in [\"--python-expr\", \"--python-file\", \"--pmap\", \"--dynamic-library\", \"--all-destination\", \"--fail-destination\", \"--pass-destination\", \"--print-statistics\", \"--print-volume-statistics\", \"--xargs\"]\n regexp = new RegExp(excludedOption + \"=?[^\\\\s]*\", \"gi\")\n options = options.replace(regexp, \"\")\n filter = new RegExp(\"[^\\\\s\\\\=\\\\-\\\\/\\\\,\\\\.\\\\:0-9a-z_\" + additionalPermittedCharacters + \"]\", \"gi\")\n options = options.replace(filter, \"\")\n options\n\nshare.isDebug = Meteor.settings.public.isDebug\n\nobject = if typeof(window) != \"undefined\" then window else GLOBAL\nobject.isDebug = share.isDebug\nif typeof(console) != \"undefined\" && console.log && _.isFunction(console.log)\n object.cl = _.bind(console.log, console)\nelse\n object.cl = ->\n"]} \ No newline at end of file diff --git a/private/bundle/programs/server/app/lib/transformations.coffee.js b/private/bundle/programs/server/app/lib/transformations.coffee.js index 795cbd7..623659a 100644 --- a/private/bundle/programs/server/app/lib/transformations.coffee.js +++ b/private/bundle/programs/server/app/lib/transformations.coffee.js @@ -138,19 +138,33 @@ share.Query = (function() { }; Query.prototype.inputCommand = function(config, profile, isPresentation) { - var command, exclusion, rwFileValidate, _i, _len, _ref; + var command, exclusion, pcapFile, pcapFileValidate, rwFileValidate, typeValidate, _i, _len, _ref; if (isPresentation == null) { isPresentation = false; } command = "rwfilter"; command += " " + this.inputOptions(config); + if (this["interface"] === "cmd") { + typeValidate = command.search(RegExp('--type', 'i')); + if (typeValidate < 0) { + command += " --type=all "; + } + } if (config.siteConfigFile) { command += " --site-config-file=" + config.siteConfigFile; } - rwFileValidate = command.search(RegExp(' (\\/|\\w)+\\.(rwf|rw)', 'i')); + rwFileValidate = command.search(RegExp(' (\\/|\\w)+(\\/|\\w|\\-)*\\.(rwf|rw)', 'i')); if (rwFileValidate < 0) { - if (config.dataRootdir) { - command += " --data-rootdir=" + config.dataRootdir; + pcapFileValidate = command.search(RegExp(' (\\/|\\w)+(\\/|\\w|\\-)*\\.(pcap)', 'i')); + if (pcapFileValidate >= 0) { + pcapFile = command.match(RegExp('(\\/|\\w)+(\\/|\\w|\\-)*\\.(pcap)', 'i')); + command += " --input-pipe=stdin"; + command = command.replace(pcapFile[0], ""); + command = "rwp2yaf2silk --in=" + pcapFile[0] + " --out=- |" + command; + } else { + if (config.dataRootdir) { + command += " --data-rootdir=" + config.dataRootdir; + } } } command += " --pass=stdout"; diff --git a/private/bundle/programs/server/app/lib/transformations.coffee.js.map b/private/bundle/programs/server/app/lib/transformations.coffee.js.map index 2b57f2a..5d427b8 100644 --- a/private/bundle/programs/server/app/lib/transformations.coffee.js.map +++ b/private/bundle/programs/server/app/lib/transformations.coffee.js.map @@ -1 +1 @@ -{"version":3,"sources":["transformations.coffee"],"names":[],"mappings":"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","file":"/lib/transformations.coffee.js","sourcesContent":["# not used by default\nclass share.User\n constructor: (doc) ->\n _.extend(@, doc)\n @email = @emails?[0]?.address\n @name = @profile.name\n @firstName = @name.split(' ').slice(0, 1).join(' ')\n @lastName = @name.split(' ').slice(1).join(' ')\n\nclass share.Config\n constructor: (doc) ->\n _.extend(@, doc)\n wrapCommand: (command) ->\n \"ssh \" + @getSSHOptions() + \" -p \" + @port + \" \" + @user + \"@\" + @host + \" \\\"\" + command + \"\\\"\"\n getSSHOptions: ->\n \"-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=error -i \" + @getIdentityFile()\n getIdentityFile: ->\n if @identityFile then @identityFile else process.env.PWD + \"/settings/identity\"\n\nclass share.Query\n constructor: (doc) ->\n _.extend(@, doc)\n @header = []\n @rows = []\n if @result\n parsedResult = share.parseResult(@result)\n if @output is \"rwstats\"\n parsedResult.shift()\n parsedResult.shift()\n # shift-shift outta here, you redundant rows\n if @output is \"rwcount\"\n parsedResult.unshift(share.rwcountFields)\n rawHeader = parsedResult.shift()\n for name in rawHeader\n spec =\n _id: name\n name: name.trim()\n isDistinct: false\n isPercentage: false\n if spec.name.indexOf(\"%\") is 0\n spec.isPercentage = true\n spec.name = spec.name.substr(1)\n distinctRegex = /-D.*$/i\n if spec.name.match(distinctRegex)\n spec.isDistinct = true\n spec.name = spec.name.replace(distinctRegex, \"\")\n if spec.isDistinct\n spec.chartType = \"number\"\n else\n spec.chartType = share.chartFieldTypes[spec.name] or \"string\"\n @header.push(spec)\n if @presentation is \"chart\"\n for parsedRow in parsedResult\n row = []\n for parsedValue, index in parsedRow\n spec = @header[index]\n if @output is \"rwcount\" and spec.name not in @rwcountFields\n continue\n switch spec.chartType\n when \"number\"\n parsedValue = parseFloat(parsedValue)\n when \"date\", \"datetime\"\n m = moment.utc(parsedValue, \"YYYY/MM/DDTHH:mm:ss.SSS\")\n parsedValue = m.toDate()\n row.push(parsedValue)\n @rows.push(row)\n else\n for parsedRow in parsedResult\n row = []\n for parsedValue, index in parsedRow\n spec = @header[index]\n row.push({_id: spec._id, value: parsedValue, queryId: @_id})\n @rows.push(row)\n filteredHeader = []\n for spec in @header\n filteredHeader.push(spec)\n @header = filteredHeader\n displayName: ->\n if @isQuick then \"Quick query #\" + @_id else @name or \"#\" + @_id\n inputCommand: (config, profile, isPresentation = false) ->\n command = \"rwfilter\"\n command += \" \" + @inputOptions(config)\n \n if config.siteConfigFile\n command += \" --site-config-file=\" + config.siteConfigFile\n rwFileValidate = command.search(RegExp(' (\\\\/|\\\\w)+\\\\.(rwf|rw)', 'i'))\n \n if rwFileValidate < 0\n if config.dataRootdir\n command += \" --data-rootdir=\" + config.dataRootdir\n \n command += \" --pass=stdout\"\n for exclusion in @inputExclusions()\n command += \" | rwfilter --input-pipe=stdin\"\n command += \" \" + exclusion\n if config.siteConfigFile\n command += \" --site-config-file=\" + config.siteConfigFile\n # config.dataRootdir shouldn't be used with exclusions\n command += \" --fail=stdout\"\n command += \" > \" + (config.dataTempdir or \"/tmp\") + \"/\" + @_id + \".rwf\"\n if config.isSSH and not isPresentation\n command = config.wrapCommand(command)\n command\n inputOptions: (config) ->\n if @interface is \"builder\"\n parameters = []\n if @typesEnabled and @types.length and _.difference(share.queryTypes, @types).length\n value = @types.join(\",\")\n else\n value = \"all\"\n parameters.push(\"--type=\" + value)\n if @startDateType is \"interval\"\n if @startDateEnabled and @startDate\n parameters.push(\"--start-date=\" + @startDate)\n if @endDateEnabled and @endDate\n parameters.push(\"--end-date=\" + @endDate)\n if @activeTimeEnabled and @activeTime\n parameters.push(\"--active-time=\" + @activeTime)\n else\n if @startDateOffsetEnabled and @startDateOffset\n startDateOffsetNumber = share.intval(@startDateOffset)\n eTimeMoment = moment.utc()\n sTimeMoment = eTimeMoment.clone().subtract(startDateOffsetNumber, 'minutes')\n parameters.push(\"--start-date=\" + sTimeMoment.format(\"YYYY/MM/DD:HH\"))\n parameters.push(\"--end-date=\" + eTimeMoment.format(\"YYYY/MM/DD:HH\"))\n parameters.push(\"--active-time=\" + sTimeMoment.format(\"YYYY/MM/DDTHH:mm:ss.SSS\") + \"-\" + eTimeMoment.format(\"YYYY/MM/DDTHH:mm:ss.SSS\"))\n if @sensorEnabled and @sensor\n parameters.push(\"--sensor=\" + @sensor)\n if @daddressEnabled and @daddress\n parameters.push(\"--daddress=\" + @daddress)\n if @saddressEnabled and @saddress\n parameters.push(\"--saddress=\" + @saddress)\n if @anyAddressEnabled and @anyAddress\n parameters.push(\"--any-address=\" + @anyAddress)\n if @dipSetEnabled and @dipSet\n parameters.push(\"--dipset=\" + (config.dataTempdir or \"/tmp\") + \"/\" + @dipSet + \".rws\")\n if @sipSetEnabled and @sipSet\n parameters.push(\"--sipset=\" + (config.dataTempdir or \"/tmp\") + \"/\" + @sipSet + \".rws\")\n if @anySetEnabled and @anySet\n parameters.push(\"--anyset=\" + (config.dataTempdir or \"/tmp\") + \"/\" + @anySet + \".rws\")\n if @tupleFileEnabled and @tupleFile\n parameters.push(\"--tuple-file=\" + (config.dataTempdir or \"/tmp\") + \"/\" + @tupleFile + \".tuple\")\n if @tupleDirectionEnabled and @tupleDirection\n parameters.push(\"--tuple-direction=\" + @tupleDirection)\n if @tupleDelimiterEnabled and @tupleDelimiter\n parameters.push(\"--tuple-delimiter=\" + @tupleDelimiter)\n if @tupleFieldsEnabled and @tupleFields\n parameters.push(\"--tuple-fields=\" + @tupleFields)\n if @dportEnabled and @dport\n parameters.push(\"--dport=\" + @dport)\n if @sportEnabled and @sport\n parameters.push(\"--sport=\" + @sport)\n if @aportEnabled and @aport\n parameters.push(\"--aport=\" + @aport)\n if @dccEnabled and @dcc.length\n parameters.push(\"--dcc=\" + @dcc.join(\",\"))\n if @sccEnabled and @scc.length\n parameters.push(\"--scc=\" + @scc.join(\",\"))\n if @protocolEnabled and @protocol\n parameters.push(\"--protocol=\" + @protocol)\n if @flagsAllEnabled and @flagsAll\n parameters.push(\"--flags-all=\" + @flagsAll)\n if @additionalParametersEnabled and @additionalParameters\n parameters.push(@additionalParameters)\n string = parameters.join(\" \")\n else\n string = @cmd\n share.filterOptions(string)\n inputExclusions: ->\n exclusionsCmd = \"\"\n if @interface is \"builder\"\n if @additionalExclusionsCmdEnabled\n exclusionsCmd = @additionalExclusionsCmd\n else\n exclusionsCmd = @exclusionsCmd\n exclusionsCmd = share.filterOptions(exclusionsCmd)\n _.compact(exclusionsCmd.split(/\\s+(?:OR|\\|\\|)\\s+/i))\n outputCommand: (config, profile, isPresentation = false) ->\n switch @output\n when \"rwcut\"\n @outputRwcutCommand(config, profile, isPresentation)\n when \"rwstats\"\n @outputRwstatsCommand(config, profile, isPresentation)\n when \"rwcount\"\n @outputRwcountCommand(config, profile, isPresentation)\n outputRwcutCommand: (config, profile, isPresentation = false) ->\n commands = []\n if @sortField\n rwsortOptions = [\"--fields=\" + @sortField]\n if @sortReverse\n rwsortOptions.push(\"--reverse\")\n if config.siteConfigFile\n rwsortOptions.push(\"--site-config-file=\" + config.siteConfigFile)\n rwsortOptionsString = rwsortOptions.join(\" \")\n rwsortOptionsString = share.filterOptions(rwsortOptionsString)\n commands.push(\"rwsort \" + rwsortOptionsString)\n rwcutOptions = [\"--num-recs=\" + profile.numRecs, \"--start-rec-num=\" + @startRecNum, \"--delimited\"]\n if @fields.length\n rwcutOptions.push(\"--fields=\" + _.intersection(@fieldsOrder, @fields).join(\",\"))\n if config.siteConfigFile\n rwcutOptions.push(\"--site-config-file=\" + config.siteConfigFile)\n rwcutOptionsString = rwcutOptions.join(\" \")\n rwcutOptionsString = share.filterOptions(rwcutOptionsString)\n commands.push(\"rwcut \" + rwcutOptionsString)\n commands[0] += \" \" + (config.dataTempdir or \"/tmp\") + \"/\" + @_id + \".rwf\"\n command = commands.join(\" | \")\n if config.isSSH and not isPresentation\n command = config.wrapCommand(command)\n command\n outputRwstatsCommand: (config, profile, isPresentation = false) ->\n defaultRwstatsOptions = [\"--delimited\"]\n if @interface is \"builder\"\n rwstatsOptions = defaultRwstatsOptions\n if @rwstatsFields.length\n rwstatsOptions.push(\"--fields=\" + _.intersection(@rwstatsFieldsOrder, @rwstatsFields).join(\",\"))\n rwstatsValues = @rwstatsValues.slice(0)\n rwstatsValuesOrder = @rwstatsValuesOrder.slice(0)\n if @rwstatsPrimaryValue\n rwstatsValues.unshift(@rwstatsPrimaryValue)\n rwstatsValuesOrder.unshift(@rwstatsPrimaryValue)\n if rwstatsValues.length\n values = _.intersection(rwstatsValuesOrder, rwstatsValues)\n for value, index in values\n if value not in share.rwstatsValues\n values[index] = \"distinct:\" + value\n rwstatsOptions.push(\"--values=\" + values.join(\",\"))\n if values[0] not in share.rwstatsValues\n rwstatsOptions.push(\"--no-percents\")\n rwstatsOptions.push(\"--\" + @rwstatsDirection)\n switch @rwstatsMode\n when \"count\"\n rwstatsOptions.push(\"--count=\" + @rwstatsCountModeValue)\n when \"threshold\"\n rwstatsOptions.push(\"--threshold=\" + @rwstatsThresholdModeValue)\n when \"percentage\"\n rwstatsOptions.push(\"--percentage=\" + @rwstatsPercentageModeValue)\n if @rwstatsBinTimeEnabled\n if @rwstatsBinTime\n rwstatsOptions.push(\"--bin-time=\" + @rwstatsBinTime)\n else\n rwstatsOptions.push(\"--bin-time\")\n if config.siteConfigFile\n rwstatsOptions.push(\"--site-config-file=\" + config.siteConfigFile)\n rwstatsOptionsString = rwstatsOptions.join(\" \")\n else\n rwstatsOptionsString = @rwstatsCmd + \" \" + defaultRwstatsOptions.join(\" \")\n rwstatsOptionsString = share.filterOptions(rwstatsOptionsString)\n command = \"rwstats \" + rwstatsOptionsString\n command += \" \" + (config.dataTempdir or \"/tmp\") + \"/\" + @_id + \".rwf\"\n if config.isSSH and not isPresentation\n command = config.wrapCommand(command)\n command\n outputRwcountCommand: (config, profile, isPresentation = false) ->\n defaultRwcountOptions = [\"--delimited\", \"--no-titles\"] # --no-titles is necessary, because header is added later\n if @interface is \"builder\"\n rwcountOptions = defaultRwcountOptions\n if @rwcountBinSizeEnabled\n rwcountOptions.push(\"--bin-size=\" + @rwcountBinSize)\n if @rwcountLoadSchemeEnabled\n rwcountOptions.push(\"--load-scheme=\" + @rwcountLoadScheme)\n if @rwcountSkipZeroes\n rwcountOptions.push(\"--skip-zeroes\")\n if config.siteConfigFile\n rwcountOptions.push(\"--site-config-file=\" + config.siteConfigFile)\n rwcountOptionsString = rwcountOptions.join(\" \")\n else\n rwcountOptionsString = @rwcountCmd + \" \" + defaultRwcountOptions.join(\" \")\n rwcountOptionsString = share.filterOptions(rwcountOptionsString)\n command = \"rwcount \" + rwcountOptionsString\n command += \" \" + (config.dataTempdir or \"/tmp\") + \"/\" + @_id + \".rwf\"\n if @presentation is \"table\"\n if @sortField\n fieldIndex = share.rwcountFields.indexOf(@sortField)\n sortOptions = \"--field-separator=\\\\\\| --key=+\" + (fieldIndex + 1) + \"n\" + (if @sortReverse then \"r\" else \"\")\n sortOptions = share.filterOptions(sortOptions, \"\\\\\\\\\\\\|\\\\+\")\n sortCommand = \"sort \" + sortOptions\n command += \" | \" + sortCommand\n if profile.numRecs\n headOptions = \"--lines=\" + (@startRecNum + profile.numRecs - 1)\n headOptions = share.filterOptions(headOptions)\n headCommand = \"head \" + headOptions\n tailOptions = \"--lines=\" + profile.numRecs\n tailOptions = share.filterOptions(tailOptions)\n tailCommand = \"tail \" + tailOptions\n command += \" | \" + headCommand + \" | \" + tailCommand\n if config.isSSH and not isPresentation\n command = config.wrapCommand(command)\n command\n rwstatsCountModeValueIsEnabled: ->\n @rwstatsMode is \"count\"\n rwstatsThresholdModeValueIsEnabled: ->\n @rwstatsMode is \"threshold\"\n rwstatsPercentageModeValueIsEnabled: ->\n @rwstatsMode is \"percentage\"\n availableChartTypes: ->\n share.availableChartTypes[@output]\n path: ->\n \"/query/\" + @_id\n\nclass share.IPSet\n constructor: (doc) ->\n _.extend(@, doc)\n displayName: ->\n @name or \"#\" + @_id\n objectSelectName: ->\n @displayName()\n objectSelectValue: ->\n @_id\n path: ->\n \"/ipset/\" + @_id\n\nclass share.Tuple\n constructor: (doc) ->\n _.extend(@, doc)\n displayName: ->\n @name or \"#\" + @_id\n objectSelectName: ->\n @displayName()\n objectSelectValue: ->\n @_id\n path: ->\n \"/tuple/\" + @_id\n\nshare.Transformations =\n user: (user) ->\n if user instanceof share.User or not user then user else new share.User(user)\n config: (config) ->\n if config instanceof share.Config or not config then config else new share.Config(config)\n query: (query) ->\n if query instanceof share.Query or not query then query else new share.Query(query)\n ipset: (ipset) ->\n if ipset instanceof share.IPSet or not ipset then ipset else new share.IPSet(ipset)\n tuple: (tuple) ->\n if tuple instanceof share.Tuple or not tuple then tuple else new share.Tuple(tuple)\n"]} \ No newline at end of file +{"version":3,"sources":["transformations.coffee"],"names":[],"mappings":"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","file":"/lib/transformations.coffee.js","sourcesContent":["# not used by default\nclass share.User\n constructor: (doc) ->\n _.extend(@, doc)\n @email = @emails?[0]?.address\n @name = @profile.name\n @firstName = @name.split(' ').slice(0, 1).join(' ')\n @lastName = @name.split(' ').slice(1).join(' ')\n\nclass share.Config\n constructor: (doc) ->\n _.extend(@, doc)\n wrapCommand: (command) ->\n \"ssh \" + @getSSHOptions() + \" -p \" + @port + \" \" + @user + \"@\" + @host + \" \\\"\" + command + \"\\\"\"\n getSSHOptions: ->\n \"-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=error -i \" + @getIdentityFile()\n getIdentityFile: ->\n if @identityFile then @identityFile else process.env.PWD + \"/settings/identity\"\n\nclass share.Query\n constructor: (doc) ->\n _.extend(@, doc)\n @header = []\n @rows = []\n if @result\n parsedResult = share.parseResult(@result)\n if @output is \"rwstats\"\n parsedResult.shift()\n parsedResult.shift()\n # shift-shift outta here, you redundant rows\n if @output is \"rwcount\"\n parsedResult.unshift(share.rwcountFields)\n rawHeader = parsedResult.shift()\n for name in rawHeader\n spec =\n _id: name\n name: name.trim()\n isDistinct: false\n isPercentage: false\n if spec.name.indexOf(\"%\") is 0\n spec.isPercentage = true\n spec.name = spec.name.substr(1)\n distinctRegex = /-D.*$/i\n if spec.name.match(distinctRegex)\n spec.isDistinct = true\n spec.name = spec.name.replace(distinctRegex, \"\")\n if spec.isDistinct\n spec.chartType = \"number\"\n else\n spec.chartType = share.chartFieldTypes[spec.name] or \"string\"\n @header.push(spec)\n if @presentation is \"chart\"\n for parsedRow in parsedResult\n row = []\n for parsedValue, index in parsedRow\n spec = @header[index]\n if @output is \"rwcount\" and spec.name not in @rwcountFields\n continue\n switch spec.chartType\n when \"number\"\n parsedValue = parseFloat(parsedValue)\n when \"date\", \"datetime\"\n m = moment.utc(parsedValue, \"YYYY/MM/DDTHH:mm:ss.SSS\")\n parsedValue = m.toDate()\n row.push(parsedValue)\n @rows.push(row)\n else\n for parsedRow in parsedResult\n row = []\n for parsedValue, index in parsedRow\n spec = @header[index]\n row.push({_id: spec._id, value: parsedValue, queryId: @_id})\n @rows.push(row)\n filteredHeader = []\n for spec in @header\n filteredHeader.push(spec)\n @header = filteredHeader\n displayName: ->\n if @isQuick then \"Quick query #\" + @_id else @name or \"#\" + @_id\n inputCommand: (config, profile, isPresentation = false) ->\n command = \"rwfilter\"\n command += \" \" + @inputOptions(config)\n # defaults to having --type=all as the standard instead of the SiLK default.\n if @interface is \"cmd\"\n typeValidate = command.search(RegExp('--type', 'i'))\n if typeValidate < 0\n command += \" --type=all \"\n if config.siteConfigFile\n command += \" --site-config-file=\" + config.siteConfigFile\n # rwf and pcap integration\n rwFileValidate = command.search(RegExp(' (\\\\/|\\\\w)+(\\\\/|\\\\w|\\\\-)*\\\\.(rwf|rw)', 'i'))\n if rwFileValidate < 0\n pcapFileValidate = command.search(RegExp(' (\\\\/|\\\\w)+(\\\\/|\\\\w|\\\\-)*\\\\.(pcap)', 'i'))\n if pcapFileValidate >= 0\n pcapFile = command.match(RegExp('(\\\\/|\\\\w)+(\\\\/|\\\\w|\\\\-)*\\\\.(pcap)', 'i'))\n command += \" --input-pipe=stdin\"\n command = command.replace(pcapFile[0],\"\")\n command = \"rwp2yaf2silk --in=\" + pcapFile[0] + \" --out=- |\" + command\n else\n if config.dataRootdir\n command += \" --data-rootdir=\" + config.dataRootdir\n\n command += \" --pass=stdout\"\n for exclusion in @inputExclusions()\n command += \" | rwfilter --input-pipe=stdin\"\n command += \" \" + exclusion\n if config.siteConfigFile\n command += \" --site-config-file=\" + config.siteConfigFile\n # config.dataRootdir shouldn't be used with exclusions\n command += \" --fail=stdout\"\n command += \" > \" + (config.dataTempdir or \"/tmp\") + \"/\" + @_id + \".rwf\"\n if config.isSSH and not isPresentation\n command = config.wrapCommand(command)\n command\n inputOptions: (config) ->\n if @interface is \"builder\"\n parameters = []\n if @typesEnabled and @types.length and _.difference(share.queryTypes, @types).length\n value = @types.join(\",\")\n else\n value = \"all\"\n parameters.push(\"--type=\" + value)\n if @startDateType is \"interval\"\n if @startDateEnabled and @startDate\n parameters.push(\"--start-date=\" + @startDate)\n if @endDateEnabled and @endDate\n parameters.push(\"--end-date=\" + @endDate)\n if @activeTimeEnabled and @activeTime\n parameters.push(\"--active-time=\" + @activeTime)\n else\n if @startDateOffsetEnabled and @startDateOffset\n startDateOffsetNumber = share.intval(@startDateOffset)\n eTimeMoment = moment.utc()\n sTimeMoment = eTimeMoment.clone().subtract(startDateOffsetNumber, 'minutes')\n parameters.push(\"--start-date=\" + sTimeMoment.format(\"YYYY/MM/DD:HH\"))\n parameters.push(\"--end-date=\" + eTimeMoment.format(\"YYYY/MM/DD:HH\"))\n parameters.push(\"--active-time=\" + sTimeMoment.format(\"YYYY/MM/DDTHH:mm:ss.SSS\") + \"-\" + eTimeMoment.format(\"YYYY/MM/DDTHH:mm:ss.SSS\"))\n if @sensorEnabled and @sensor\n parameters.push(\"--sensor=\" + @sensor)\n if @daddressEnabled and @daddress\n parameters.push(\"--daddress=\" + @daddress)\n if @saddressEnabled and @saddress\n parameters.push(\"--saddress=\" + @saddress)\n if @anyAddressEnabled and @anyAddress\n parameters.push(\"--any-address=\" + @anyAddress)\n if @dipSetEnabled and @dipSet\n parameters.push(\"--dipset=\" + (config.dataTempdir or \"/tmp\") + \"/\" + @dipSet + \".rws\")\n if @sipSetEnabled and @sipSet\n parameters.push(\"--sipset=\" + (config.dataTempdir or \"/tmp\") + \"/\" + @sipSet + \".rws\")\n if @anySetEnabled and @anySet\n parameters.push(\"--anyset=\" + (config.dataTempdir or \"/tmp\") + \"/\" + @anySet + \".rws\")\n if @tupleFileEnabled and @tupleFile\n parameters.push(\"--tuple-file=\" + (config.dataTempdir or \"/tmp\") + \"/\" + @tupleFile + \".tuple\")\n if @tupleDirectionEnabled and @tupleDirection\n parameters.push(\"--tuple-direction=\" + @tupleDirection)\n if @tupleDelimiterEnabled and @tupleDelimiter\n parameters.push(\"--tuple-delimiter=\" + @tupleDelimiter)\n if @tupleFieldsEnabled and @tupleFields\n parameters.push(\"--tuple-fields=\" + @tupleFields)\n if @dportEnabled and @dport\n parameters.push(\"--dport=\" + @dport)\n if @sportEnabled and @sport\n parameters.push(\"--sport=\" + @sport)\n if @aportEnabled and @aport\n parameters.push(\"--aport=\" + @aport)\n if @dccEnabled and @dcc.length\n parameters.push(\"--dcc=\" + @dcc.join(\",\"))\n if @sccEnabled and @scc.length\n parameters.push(\"--scc=\" + @scc.join(\",\"))\n if @protocolEnabled and @protocol\n parameters.push(\"--protocol=\" + @protocol)\n if @flagsAllEnabled and @flagsAll\n parameters.push(\"--flags-all=\" + @flagsAll)\n if @additionalParametersEnabled and @additionalParameters\n parameters.push(@additionalParameters)\n string = parameters.join(\" \")\n else\n string = @cmd\n share.filterOptions(string)\n inputExclusions: ->\n exclusionsCmd = \"\"\n if @interface is \"builder\"\n if @additionalExclusionsCmdEnabled\n exclusionsCmd = @additionalExclusionsCmd\n else\n exclusionsCmd = @exclusionsCmd\n exclusionsCmd = share.filterOptions(exclusionsCmd)\n _.compact(exclusionsCmd.split(/\\s+(?:OR|\\|\\|)\\s+/i))\n outputCommand: (config, profile, isPresentation = false) ->\n switch @output\n when \"rwcut\"\n @outputRwcutCommand(config, profile, isPresentation)\n when \"rwstats\"\n @outputRwstatsCommand(config, profile, isPresentation)\n when \"rwcount\"\n @outputRwcountCommand(config, profile, isPresentation)\n outputRwcutCommand: (config, profile, isPresentation = false) ->\n commands = []\n if @sortField\n rwsortOptions = [\"--fields=\" + @sortField]\n if @sortReverse\n rwsortOptions.push(\"--reverse\")\n if config.siteConfigFile\n rwsortOptions.push(\"--site-config-file=\" + config.siteConfigFile)\n rwsortOptionsString = rwsortOptions.join(\" \")\n rwsortOptionsString = share.filterOptions(rwsortOptionsString)\n commands.push(\"rwsort \" + rwsortOptionsString)\n rwcutOptions = [\"--num-recs=\" + profile.numRecs, \"--start-rec-num=\" + @startRecNum, \"--delimited\"]\n if @fields.length\n rwcutOptions.push(\"--fields=\" + _.intersection(@fieldsOrder, @fields).join(\",\"))\n if config.siteConfigFile\n rwcutOptions.push(\"--site-config-file=\" + config.siteConfigFile)\n rwcutOptionsString = rwcutOptions.join(\" \")\n rwcutOptionsString = share.filterOptions(rwcutOptionsString)\n commands.push(\"rwcut \" + rwcutOptionsString)\n commands[0] += \" \" + (config.dataTempdir or \"/tmp\") + \"/\" + @_id + \".rwf\"\n command = commands.join(\" | \")\n if config.isSSH and not isPresentation\n command = config.wrapCommand(command)\n command\n outputRwstatsCommand: (config, profile, isPresentation = false) ->\n defaultRwstatsOptions = [\"--delimited\"]\n if @interface is \"builder\"\n rwstatsOptions = defaultRwstatsOptions\n if @rwstatsFields.length\n rwstatsOptions.push(\"--fields=\" + _.intersection(@rwstatsFieldsOrder, @rwstatsFields).join(\",\"))\n rwstatsValues = @rwstatsValues.slice(0)\n rwstatsValuesOrder = @rwstatsValuesOrder.slice(0)\n if @rwstatsPrimaryValue\n rwstatsValues.unshift(@rwstatsPrimaryValue)\n rwstatsValuesOrder.unshift(@rwstatsPrimaryValue)\n if rwstatsValues.length\n values = _.intersection(rwstatsValuesOrder, rwstatsValues)\n for value, index in values\n if value not in share.rwstatsValues\n values[index] = \"distinct:\" + value\n rwstatsOptions.push(\"--values=\" + values.join(\",\"))\n if values[0] not in share.rwstatsValues\n rwstatsOptions.push(\"--no-percents\")\n rwstatsOptions.push(\"--\" + @rwstatsDirection)\n switch @rwstatsMode\n when \"count\"\n rwstatsOptions.push(\"--count=\" + @rwstatsCountModeValue)\n when \"threshold\"\n rwstatsOptions.push(\"--threshold=\" + @rwstatsThresholdModeValue)\n when \"percentage\"\n rwstatsOptions.push(\"--percentage=\" + @rwstatsPercentageModeValue)\n if @rwstatsBinTimeEnabled\n if @rwstatsBinTime\n rwstatsOptions.push(\"--bin-time=\" + @rwstatsBinTime)\n else\n rwstatsOptions.push(\"--bin-time\")\n if config.siteConfigFile\n rwstatsOptions.push(\"--site-config-file=\" + config.siteConfigFile)\n rwstatsOptionsString = rwstatsOptions.join(\" \")\n else\n rwstatsOptionsString = @rwstatsCmd + \" \" + defaultRwstatsOptions.join(\" \")\n rwstatsOptionsString = share.filterOptions(rwstatsOptionsString)\n command = \"rwstats \" + rwstatsOptionsString\n command += \" \" + (config.dataTempdir or \"/tmp\") + \"/\" + @_id + \".rwf\"\n if config.isSSH and not isPresentation\n command = config.wrapCommand(command)\n command\n outputRwcountCommand: (config, profile, isPresentation = false) ->\n defaultRwcountOptions = [\"--delimited\", \"--no-titles\"] # --no-titles is necessary, because header is added later\n if @interface is \"builder\"\n rwcountOptions = defaultRwcountOptions\n if @rwcountBinSizeEnabled\n rwcountOptions.push(\"--bin-size=\" + @rwcountBinSize)\n if @rwcountLoadSchemeEnabled\n rwcountOptions.push(\"--load-scheme=\" + @rwcountLoadScheme)\n if @rwcountSkipZeroes\n rwcountOptions.push(\"--skip-zeroes\")\n if config.siteConfigFile\n rwcountOptions.push(\"--site-config-file=\" + config.siteConfigFile)\n rwcountOptionsString = rwcountOptions.join(\" \")\n else\n rwcountOptionsString = @rwcountCmd + \" \" + defaultRwcountOptions.join(\" \")\n rwcountOptionsString = share.filterOptions(rwcountOptionsString)\n command = \"rwcount \" + rwcountOptionsString\n command += \" \" + (config.dataTempdir or \"/tmp\") + \"/\" + @_id + \".rwf\"\n if @presentation is \"table\"\n if @sortField\n fieldIndex = share.rwcountFields.indexOf(@sortField)\n sortOptions = \"--field-separator=\\\\\\| --key=+\" + (fieldIndex + 1) + \"n\" + (if @sortReverse then \"r\" else \"\")\n sortOptions = share.filterOptions(sortOptions, \"\\\\\\\\\\\\|\\\\+\")\n sortCommand = \"sort \" + sortOptions\n command += \" | \" + sortCommand\n if profile.numRecs\n headOptions = \"--lines=\" + (@startRecNum + profile.numRecs - 1)\n headOptions = share.filterOptions(headOptions)\n headCommand = \"head \" + headOptions\n tailOptions = \"--lines=\" + profile.numRecs\n tailOptions = share.filterOptions(tailOptions)\n tailCommand = \"tail \" + tailOptions\n command += \" | \" + headCommand + \" | \" + tailCommand\n if config.isSSH and not isPresentation\n command = config.wrapCommand(command)\n command\n rwstatsCountModeValueIsEnabled: ->\n @rwstatsMode is \"count\"\n rwstatsThresholdModeValueIsEnabled: ->\n @rwstatsMode is \"threshold\"\n rwstatsPercentageModeValueIsEnabled: ->\n @rwstatsMode is \"percentage\"\n availableChartTypes: ->\n share.availableChartTypes[@output]\n path: ->\n \"/query/\" + @_id\n\nclass share.IPSet\n constructor: (doc) ->\n _.extend(@, doc)\n displayName: ->\n @name or \"#\" + @_id\n objectSelectName: ->\n @displayName()\n objectSelectValue: ->\n @_id\n path: ->\n \"/ipset/\" + @_id\n\nclass share.Tuple\n constructor: (doc) ->\n _.extend(@, doc)\n displayName: ->\n @name or \"#\" + @_id\n objectSelectName: ->\n @displayName()\n objectSelectValue: ->\n @_id\n path: ->\n \"/tuple/\" + @_id\n\nshare.Transformations =\n user: (user) ->\n if user instanceof share.User or not user then user else new share.User(user)\n config: (config) ->\n if config instanceof share.Config or not config then config else new share.Config(config)\n query: (query) ->\n if query instanceof share.Query or not query then query else new share.Query(query)\n ipset: (ipset) ->\n if ipset instanceof share.IPSet or not ipset then ipset else new share.IPSet(ipset)\n tuple: (tuple) ->\n if tuple instanceof share.Tuple or not tuple then tuple else new share.Tuple(tuple)\n"]} \ No newline at end of file diff --git a/private/bundle/programs/server/app/server/execution.coffee.js b/private/bundle/programs/server/app/server/execution.coffee.js index a99b45f..3dd7284 100644 --- a/private/bundle/programs/server/app/server/execution.coffee.js +++ b/private/bundle/programs/server/app/server/execution.coffee.js @@ -374,6 +374,9 @@ executeQuery = function(query, config, profile, callback) { result = stdout.trim(); error = stderr.trim(); code = err ? err.code : 0; + if (error.indexOf("Rejected") !== -1) { + error = null; + } return callback(result, error, code); })); }; diff --git a/private/bundle/programs/server/app/server/execution.coffee.js.map b/private/bundle/programs/server/app/server/execution.coffee.js.map index 196b69f..2490b69 100644 --- a/private/bundle/programs/server/app/server/execution.coffee.js.map +++ b/private/bundle/programs/server/app/server/execution.coffee.js.map @@ -1 +1 @@ -{"version":3,"sources":["execution.coffee"],"names":[],"mappings":"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","file":"/server/execution.coffee.js","sourcesContent":["fs = Npm.require(\"fs\")\nProcess = Npm.require(\"child_process\")\nFuture = Npm.require('fibers/future')\nwriteFile = Future.wrap(fs.writeFile)\n\nshare.Queries.after.update (userId, query, fieldNames, modifier, options) ->\n if _.intersection(fieldNames, share.inputFields).length\n share.Queries.update(query._id, {$set: {isInputStale: true}})\n\nshare.Queries.after.update (userId, query, fieldNames, modifier, options) ->\n if not query.isOutputStale\n return\n config = share.Configs.findOne({}, {transform: share.Transformations.config})\n query = share.Transformations.query(query)\n if not query.inputOptions(config)\n share.Queries.update(query._id, {$set: {isInputStale: false, isOutputStale: false}})\n return\n profile = Meteor.users.findOne(query.ownerId).profile\n callback = (result, error, code) ->\n share.Queries.update(query._id, {$set: {result: result, error: error, code: code, isInputStale: false, isOutputStale: false}})\n loadQueryResult(query, config, profile, callback)\n\nMeteor.methods\n checkConnection: ->\n unless @userId\n throw new Match.Error(\"Operation not allowed for unauthorized users\")\n queryId = share.Queries.insert({\n interface: \"cmd\"\n cmd: \"--protocol=0-255\"\n isQuick: true\n })\n config = share.Configs.findOne({}, {transform: share.Transformations.config})\n profile = Meteor.users.findOne(@userId).profile\n query = share.Queries.findOne(queryId, {transform: share.Transformations.query})\n @unblock()\n fut = new Future()\n callback = (result, error, code) ->\n if error\n fut.throw(new Meteor.Error(500, error))\n else\n fut.return(result)\n executeQuery(query, config, profile, callback)\n fut.wait()\n # quick queries are cleaned up automatically\n loadDataForCSV: (queryId) ->\n check(queryId, Match.App.QueryId)\n unless @userId\n throw new Match.Error(\"Operation not allowed for unauthorized users\")\n config = share.Configs.findOne({}, {transform: share.Transformations.config})\n query = share.Queries.findOne(queryId, {transform: share.Transformations.query})\n unless @userId is query.ownerId\n throw new Match.Error(\"Operation not allowed for non-owners\")\n @unblock()\n fut = new Future()\n callback = (result, error, code) ->\n if error\n fut.throw(new Error(error))\n else\n fut.return(result)\n query.startRecNum = 1\n loadQueryResult(query, config, {numRecs: 0}, callback)\n fut.wait()\n getRwfToken: (queryId) ->\n check(queryId, Match.App.QueryId)\n unless @userId\n throw new Match.Error(\"Operation not allowed for unauthorized users\")\n config = share.Configs.findOne({}, {transform: share.Transformations.config})\n profile = Meteor.users.findOne(@userId).profile\n query = share.Queries.findOne(queryId, {transform: share.Transformations.query})\n unless @userId is query.ownerId\n throw new Match.Error(\"Operation not allowed for non-owners\")\n @unblock()\n token = Random.id()\n fut = new Future()\n callback = (result, error, code) ->\n if error\n fut.throw(new Error(error))\n else\n if config.isSSH\n copyCommand = \"scp \" + config.getSSHOptions() + \" -P \" + config.port + \" \" + config.user + \"@\" + config.host + \":\" + config.dataTempdir + \"/\" + query._id + \".rwf \" + \"/tmp\" + \"/\" + token + \".rwf\"\n else\n copyCommand = \"cp \" + config.dataTempdir + \"/\" + query._id + \".rwf \" + \"/tmp\" + \"/\" + token + \".rwf\"\n Process.exec(copyCommand, Meteor.bindEnvironment((err, stdout, stderr) ->\n result = stdout.trim()\n error = stderr.trim()\n code = if err then err.code else 0\n if error\n fut.throw(new Error(error))\n else\n fut.return(token)\n ))\n executeQuery(query, config, profile, callback)\n fut.wait()\n\nexecuteQuery = (query, config, profile, callback) ->\n rwsetbuildErrors = []\n rwsetbuildFutures = []\n isIpsetStale = false\n _.each([\"dipSet\", \"sipSet\", \"anySet\"], (field) ->\n if query[field + \"Enabled\"] and query[field]\n set = share.IPSets.findOne(query[field])\n if set.isOutputStale\n isIpsetStale = true\n rwsetbuildFuture = new Future()\n txtFilename = \"/tmp\" + \"/\" + set._id + \".txt\"\n rwsFilename = config.dataTempdir + \"/\" + set._id + \".rws\"\n writeFileFuture = writeFile(txtFilename, set.contents)\n if config.isSSH\n scpCommand = \"scp \" + config.getSSHOptions() + \" -P \" + config.port + \" \" + txtFilename + \" \" + config.user + \"@\" + config.host + \":\" + txtFilename\n scpFuture = new Future()\n Process.exec(scpCommand, Meteor.bindEnvironment((err, stdout, stderr) ->\n result = stdout.trim()\n error = stderr.trim()\n code = if err then err.code else 0\n if error\n rwsetbuildErrors.push(error)\n if code is 0\n else\n if not error\n throw \"scp: code is \\\"\" + code + \"\\\" while stderr is \\\"\" + error + \"\\\"\"\n scpFuture.return(result)\n ))\n scpFuture.wait()\n rmCommand = \"rm -f \" + rwsFilename\n if config.isSSH\n rmCommand = config.wrapCommand(rmCommand)\n rmFuture = new Future()\n Process.exec(rmCommand, Meteor.bindEnvironment((err, stdout, stderr) ->\n result = stdout.trim()\n error = stderr.trim()\n code = if err then err.code else 0\n if error\n rwsetbuildErrors.push(error)\n if code is 0\n else\n if not error\n throw \"rm: code is \\\"\" + code + \"\\\" while stderr is \\\"\" + error + \"\\\"\"\n rmFuture.return(result)\n ))\n rmFuture.wait()\n writeFileFuture.resolve Meteor.bindEnvironment((err, result) ->\n if err\n rwsetbuildErrors.push(err)\n rwsetbuildFuture.return(result)\n else\n rwsetbuildCommand = \"rwsetbuild \" + txtFilename + \" \" + rwsFilename\n if config.isSSH\n rwsetbuildCommand = config.wrapCommand(rwsetbuildCommand)\n Process.exec(rwsetbuildCommand, Meteor.bindEnvironment((err, stdout, stderr) ->\n result = stdout.trim()\n error = stderr.trim()\n code = if err then err.code else 0\n if error\n rwsetbuildErrors.push(error)\n if code is 0\n share.IPSets.update(set._id, {$set: {isOutputStale: false}})\n else\n if not error\n throw \"rwsetbuild: code is \\\"\" + code + \"\\\" while stderr is \\\"\" + error + \"\\\"\"\n rwsetbuildFuture.return(result)\n ))\n )\n rwsetbuildFutures.push(rwsetbuildFuture)\n )\n Future.wait(rwsetbuildFutures)\n\n if rwsetbuildErrors.length\n callback(\"\", rwsetbuildErrors.join(\"\\n\"), 255)\n return\n\n if not query.isInputStale and not isIpsetStale\n callback(\"\", \"\", 0)\n return\n\n tuplebuildErrors = []\n tuplebuildFutures = []\n isTupleStale = false\n _.each([\"tupleFile\"], (field) ->\n if query[field + \"Enabled\"] and query[field]\n set = share.Tuples.findOne(query[field])\n if set.isOutputStale\n isTupleStale = true\n tuplebuildFuture = new Future()\n txtFilename = \"/tmp\" + \"/\" + set._id + \".txt\"\n tupleFilename = config.dataTempdir + \"/\" + set._id + \".tuple\"\n writeFileFuture = writeFile(txtFilename, set.contents)\n if config.isSSH\n scpCommand = \"scp \" + config.getSSHOptions() + \" -P \" + config.port + \" \" + txtFilename + \" \" + config.user + \"@\" + config.host + \":\" + txtFilename\n scpFuture = new Future()\n Process.exec(scpCommand, Meteor.bindEnvironment((err, stdout, stderr) ->\n result = stdout.trim()\n error = stderr.trim()\n code = if err then err.code else 0\n if error\n tuplebuildErrors.push(error)\n if code is 0\n else\n if not error\n throw \"scp: code is \\\"\" + code + \"\\\" while stderr is \\\"\" + error + \"\\\"\"\n scpFuture.return(result)\n ))\n scpFuture.wait()\n rmCommand = \"rm -f \" + tupleFilename\n if config.isSSH\n rmCommand = config.wrapCommand(rmCommand)\n rmFuture = new Future()\n Process.exec(rmCommand, Meteor.bindEnvironment((err, stdout, stderr) ->\n result = stdout.trim()\n error = stderr.trim()\n code = if err then err.code else 0\n if error\n tuplebuildErrors.push(error)\n if code is 0\n else\n if not error\n throw \"rm: code is \\\"\" + code + \"\\\" while stderr is \\\"\" + error + \"\\\"\"\n rmFuture.return(result)\n ))\n rmFuture.wait()\n writeFileFuture.resolve Meteor.bindEnvironment((err, result) ->\n if err\n tuplebuildErrors.push(err)\n tuplebuildFuture.return(result)\n else\n tuplebuildCommand = \"cat \" + txtFilename + \" > \" + tupleFilename\n if config.isSSH\n tuplebuildCommand = config.wrapCommand(tuplebuildCommand)\n Process.exec(tuplebuildCommand, Meteor.bindEnvironment((err, stdout, stderr) ->\n result = stdout.trim()\n error = stderr.trim()\n code = if err then err.code else 0\n if error\n tuplebuildErrors.push(error)\n if code is 0\n share.Tuples.update(set._id, {$set: {isOutputStale: false}})\n else\n if not error\n throw \"tuplebuild: code is \\\"\" + code + \"\\\" while stderr is \\\"\" + error + \"\\\"\"\n tuplebuildFuture.return(result)\n ))\n )\n tuplebuildFutures.push(tuplebuildFuture)\n )\n Future.wait(tuplebuildFutures)\n\n if tuplebuildErrors.length\n callback(\"\", tuplebuildErrors.join(\"\\n\"), 255)\n return\n\n if not query.isInputStale and not isTupleStale\n callback(\"\", \"\", 0)\n return\n\n command = query.inputCommand(config, profile)\n Process.exec(command, Meteor.bindEnvironment((err, stdout, stderr) ->\n result = stdout.trim()\n error = stderr.trim()\n code = if err then err.code else 0\n callback(result, error, code)\n ))\n\nloadQueryResult = (query, config, profile, callback) ->\n executeQuery(query, config, profile, Meteor.bindEnvironment((result, error, code) ->\n if error\n return callback(result, error, code)\n command = query.outputCommand(config, profile)\n Process.exec(command, Meteor.bindEnvironment((err, stdout, stderr) ->\n result = stdout.trim()\n error = stderr.trim()\n code = if err then err.code else 0\n if error.indexOf(\"Error opening file\") isnt -1\n query.isInputStale = true\n loadQueryResult(query, config, profile, callback)\n else\n callback(result, error, code)\n ))\n ))\n"]} \ No newline at end of file +{"version":3,"sources":["execution.coffee"],"names":[],"mappings":"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","file":"/server/execution.coffee.js","sourcesContent":["fs = Npm.require(\"fs\")\nProcess = Npm.require(\"child_process\")\nFuture = Npm.require('fibers/future')\nwriteFile = Future.wrap(fs.writeFile)\n\nshare.Queries.after.update (userId, query, fieldNames, modifier, options) ->\n if _.intersection(fieldNames, share.inputFields).length\n share.Queries.update(query._id, {$set: {isInputStale: true}})\n\nshare.Queries.after.update (userId, query, fieldNames, modifier, options) ->\n if not query.isOutputStale\n return\n config = share.Configs.findOne({}, {transform: share.Transformations.config})\n query = share.Transformations.query(query)\n if not query.inputOptions(config)\n share.Queries.update(query._id, {$set: {isInputStale: false, isOutputStale: false}})\n return\n profile = Meteor.users.findOne(query.ownerId).profile\n callback = (result, error, code) ->\n share.Queries.update(query._id, {$set: {result: result, error: error, code: code, isInputStale: false, isOutputStale: false}})\n loadQueryResult(query, config, profile, callback)\n\nMeteor.methods\n checkConnection: ->\n unless @userId\n throw new Match.Error(\"Operation not allowed for unauthorized users\")\n queryId = share.Queries.insert({\n interface: \"cmd\"\n cmd: \"--protocol=0-255\"\n isQuick: true\n })\n config = share.Configs.findOne({}, {transform: share.Transformations.config})\n profile = Meteor.users.findOne(@userId).profile\n query = share.Queries.findOne(queryId, {transform: share.Transformations.query})\n @unblock()\n fut = new Future()\n callback = (result, error, code) ->\n if error\n fut.throw(new Meteor.Error(500, error))\n else\n fut.return(result)\n executeQuery(query, config, profile, callback)\n fut.wait()\n # quick queries are cleaned up automatically\n loadDataForCSV: (queryId) ->\n check(queryId, Match.App.QueryId)\n unless @userId\n throw new Match.Error(\"Operation not allowed for unauthorized users\")\n config = share.Configs.findOne({}, {transform: share.Transformations.config})\n query = share.Queries.findOne(queryId, {transform: share.Transformations.query})\n unless @userId is query.ownerId\n throw new Match.Error(\"Operation not allowed for non-owners\")\n @unblock()\n fut = new Future()\n callback = (result, error, code) ->\n if error\n fut.throw(new Error(error))\n else\n fut.return(result)\n query.startRecNum = 1\n loadQueryResult(query, config, {numRecs: 0}, callback)\n fut.wait()\n getRwfToken: (queryId) ->\n check(queryId, Match.App.QueryId)\n unless @userId\n throw new Match.Error(\"Operation not allowed for unauthorized users\")\n config = share.Configs.findOne({}, {transform: share.Transformations.config})\n profile = Meteor.users.findOne(@userId).profile\n query = share.Queries.findOne(queryId, {transform: share.Transformations.query})\n unless @userId is query.ownerId\n throw new Match.Error(\"Operation not allowed for non-owners\")\n @unblock()\n token = Random.id()\n fut = new Future()\n callback = (result, error, code) ->\n if error\n fut.throw(new Error(error))\n else\n if config.isSSH\n copyCommand = \"scp \" + config.getSSHOptions() + \" -P \" + config.port + \" \" + config.user + \"@\" + config.host + \":\" + config.dataTempdir + \"/\" + query._id + \".rwf \" + \"/tmp\" + \"/\" + token + \".rwf\"\n else\n copyCommand = \"cp \" + config.dataTempdir + \"/\" + query._id + \".rwf \" + \"/tmp\" + \"/\" + token + \".rwf\"\n Process.exec(copyCommand, Meteor.bindEnvironment((err, stdout, stderr) ->\n result = stdout.trim()\n error = stderr.trim()\n code = if err then err.code else 0\n if error\n fut.throw(new Error(error))\n else\n fut.return(token)\n ))\n executeQuery(query, config, profile, callback)\n fut.wait()\n\nexecuteQuery = (query, config, profile, callback) ->\n rwsetbuildErrors = []\n rwsetbuildFutures = []\n isIpsetStale = false\n _.each([\"dipSet\", \"sipSet\", \"anySet\"], (field) ->\n if query[field + \"Enabled\"] and query[field]\n set = share.IPSets.findOne(query[field])\n if set.isOutputStale\n isIpsetStale = true\n rwsetbuildFuture = new Future()\n txtFilename = \"/tmp\" + \"/\" + set._id + \".txt\"\n rwsFilename = config.dataTempdir + \"/\" + set._id + \".rws\"\n writeFileFuture = writeFile(txtFilename, set.contents)\n if config.isSSH\n scpCommand = \"scp \" + config.getSSHOptions() + \" -P \" + config.port + \" \" + txtFilename + \" \" + config.user + \"@\" + config.host + \":\" + txtFilename\n scpFuture = new Future()\n Process.exec(scpCommand, Meteor.bindEnvironment((err, stdout, stderr) ->\n result = stdout.trim()\n error = stderr.trim()\n code = if err then err.code else 0\n if error\n rwsetbuildErrors.push(error)\n if code is 0\n else\n if not error\n throw \"scp: code is \\\"\" + code + \"\\\" while stderr is \\\"\" + error + \"\\\"\"\n scpFuture.return(result)\n ))\n scpFuture.wait()\n rmCommand = \"rm -f \" + rwsFilename\n if config.isSSH\n rmCommand = config.wrapCommand(rmCommand)\n rmFuture = new Future()\n Process.exec(rmCommand, Meteor.bindEnvironment((err, stdout, stderr) ->\n result = stdout.trim()\n error = stderr.trim()\n code = if err then err.code else 0\n if error\n rwsetbuildErrors.push(error)\n if code is 0\n else\n if not error\n throw \"rm: code is \\\"\" + code + \"\\\" while stderr is \\\"\" + error + \"\\\"\"\n rmFuture.return(result)\n ))\n rmFuture.wait()\n writeFileFuture.resolve Meteor.bindEnvironment((err, result) ->\n if err\n rwsetbuildErrors.push(err)\n rwsetbuildFuture.return(result)\n else\n rwsetbuildCommand = \"rwsetbuild \" + txtFilename + \" \" + rwsFilename\n if config.isSSH\n rwsetbuildCommand = config.wrapCommand(rwsetbuildCommand)\n Process.exec(rwsetbuildCommand, Meteor.bindEnvironment((err, stdout, stderr) ->\n result = stdout.trim()\n error = stderr.trim()\n code = if err then err.code else 0\n if error\n rwsetbuildErrors.push(error)\n if code is 0\n share.IPSets.update(set._id, {$set: {isOutputStale: false}})\n else\n if not error\n throw \"rwsetbuild: code is \\\"\" + code + \"\\\" while stderr is \\\"\" + error + \"\\\"\"\n rwsetbuildFuture.return(result)\n ))\n )\n rwsetbuildFutures.push(rwsetbuildFuture)\n )\n Future.wait(rwsetbuildFutures)\n\n if rwsetbuildErrors.length\n callback(\"\", rwsetbuildErrors.join(\"\\n\"), 255)\n return\n\n if not query.isInputStale and not isIpsetStale\n callback(\"\", \"\", 0)\n return\n\n tuplebuildErrors = []\n tuplebuildFutures = []\n isTupleStale = false\n _.each([\"tupleFile\"], (field) ->\n if query[field + \"Enabled\"] and query[field]\n set = share.Tuples.findOne(query[field])\n if set.isOutputStale\n isTupleStale = true\n tuplebuildFuture = new Future()\n txtFilename = \"/tmp\" + \"/\" + set._id + \".txt\"\n tupleFilename = config.dataTempdir + \"/\" + set._id + \".tuple\"\n writeFileFuture = writeFile(txtFilename, set.contents)\n if config.isSSH\n scpCommand = \"scp \" + config.getSSHOptions() + \" -P \" + config.port + \" \" + txtFilename + \" \" + config.user + \"@\" + config.host + \":\" + txtFilename\n scpFuture = new Future()\n Process.exec(scpCommand, Meteor.bindEnvironment((err, stdout, stderr) ->\n result = stdout.trim()\n error = stderr.trim()\n code = if err then err.code else 0\n if error\n tuplebuildErrors.push(error)\n if code is 0\n else\n if not error\n throw \"scp: code is \\\"\" + code + \"\\\" while stderr is \\\"\" + error + \"\\\"\"\n scpFuture.return(result)\n ))\n scpFuture.wait()\n rmCommand = \"rm -f \" + tupleFilename\n if config.isSSH\n rmCommand = config.wrapCommand(rmCommand)\n rmFuture = new Future()\n Process.exec(rmCommand, Meteor.bindEnvironment((err, stdout, stderr) ->\n result = stdout.trim()\n error = stderr.trim()\n code = if err then err.code else 0\n if error\n tuplebuildErrors.push(error)\n if code is 0\n else\n if not error\n throw \"rm: code is \\\"\" + code + \"\\\" while stderr is \\\"\" + error + \"\\\"\"\n rmFuture.return(result)\n ))\n rmFuture.wait()\n writeFileFuture.resolve Meteor.bindEnvironment((err, result) ->\n if err\n tuplebuildErrors.push(err)\n tuplebuildFuture.return(result)\n else\n tuplebuildCommand = \"cat \" + txtFilename + \" > \" + tupleFilename\n if config.isSSH\n tuplebuildCommand = config.wrapCommand(tuplebuildCommand)\n Process.exec(tuplebuildCommand, Meteor.bindEnvironment((err, stdout, stderr) ->\n result = stdout.trim()\n error = stderr.trim()\n code = if err then err.code else 0\n if error\n tuplebuildErrors.push(error)\n if code is 0\n share.Tuples.update(set._id, {$set: {isOutputStale: false}})\n else\n if not error\n throw \"tuplebuild: code is \\\"\" + code + \"\\\" while stderr is \\\"\" + error + \"\\\"\"\n tuplebuildFuture.return(result)\n ))\n )\n tuplebuildFutures.push(tuplebuildFuture)\n )\n Future.wait(tuplebuildFutures)\n\n if tuplebuildErrors.length\n callback(\"\", tuplebuildErrors.join(\"\\n\"), 255)\n return\n\n if not query.isInputStale and not isTupleStale\n callback(\"\", \"\", 0)\n return\n\n command = query.inputCommand(config, profile)\n Process.exec(command, Meteor.bindEnvironment((err, stdout, stderr) ->\n result = stdout.trim()\n error = stderr.trim()\n code = if err then err.code else 0\n if error.indexOf(\"Rejected\") isnt -1\n error = null\n callback(result, error, code)\n ))\n\nloadQueryResult = (query, config, profile, callback) ->\n executeQuery(query, config, profile, Meteor.bindEnvironment((result, error, code) ->\n if error\n return callback(result, error, code)\n command = query.outputCommand(config, profile)\n Process.exec(command, Meteor.bindEnvironment((err, stdout, stderr) ->\n result = stdout.trim()\n error = stderr.trim()\n code = if err then err.code else 0\n if error.indexOf(\"Error opening file\") isnt -1\n query.isInputStale = true\n loadQueryResult(query, config, profile, callback)\n else\n callback(result, error, code)\n ))\n ))\n"]} \ No newline at end of file diff --git a/private/bundle/programs/server/assets/app/FlowBAT.tar.gz b/private/bundle/programs/server/assets/app/FlowBAT.tar.gz new file mode 100644 index 0000000..88f9b75 Binary files /dev/null and b/private/bundle/programs/server/assets/app/FlowBAT.tar.gz differ diff --git a/private/bundle/programs/server/node_modules/chalk/node_modules/escape-string-regexp/package.json b/private/bundle/programs/server/node_modules/chalk/node_modules/escape-string-regexp/package.json index 5f75157..f05c4af 100644 --- a/private/bundle/programs/server/node_modules/chalk/node_modules/escape-string-regexp/package.json +++ b/private/bundle/programs/server/node_modules/chalk/node_modules/escape-string-regexp/package.json @@ -1,6 +1,6 @@ { "name": "escape-string-regexp", - "version": "1.0.4", + "version": "1.0.5", "description": "Escape RegExp special characters", "license": "MIT", "repository": { @@ -47,25 +47,29 @@ "ava": "*", "xo": "*" }, - "gitHead": "e9ca6832a9506ca26402cb0e6dc95efcf35b0b97", + "gitHead": "db124a3e1aae9d692c4899e42a5c6c3e329eaa20", "bugs": { "url": "https://github.com/sindresorhus/escape-string-regexp/issues" }, "homepage": "https://github.com/sindresorhus/escape-string-regexp", - "_id": "escape-string-regexp@1.0.4", - "_shasum": "b85e679b46f72d03fbbe8a3bf7259d535c21b62f", + "_id": "escape-string-regexp@1.0.5", + "_shasum": "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4", "_from": "escape-string-regexp@^1.0.0", - "_npmVersion": "2.14.7", - "_nodeVersion": "4.2.1", + "_npmVersion": "2.14.12", + "_nodeVersion": "4.2.6", "_npmUser": { - "name": "sindresorhus", - "email": "sindresorhus@gmail.com" + "name": "jbnicolai", + "email": "jappelman@xebia.com" }, "dist": { - "shasum": "b85e679b46f72d03fbbe8a3bf7259d535c21b62f", - "tarball": "http://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.4.tgz" + "shasum": "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4", + "tarball": "http://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-9-west.internal.npmjs.com", + "tmp": "tmp/escape-string-regexp-1.0.5.tgz_1456059312074_0.7245344955008477" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.4.tgz", + "_resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "readme": "ERROR: No README data found!" } diff --git a/private/bundle/programs/server/node_modules/chalk/package.json b/private/bundle/programs/server/node_modules/chalk/package.json index b37abee..148a96a 100644 --- a/private/bundle/programs/server/node_modules/chalk/package.json +++ b/private/bundle/programs/server/node_modules/chalk/package.json @@ -77,5 +77,6 @@ "tarball": "http://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz" + "_resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/private/bundle/programs/server/program.json b/private/bundle/programs/server/program.json index 6a39756..ae29875 100644 --- a/private/bundle/programs/server/program.json +++ b/private/bundle/programs/server/program.json @@ -355,217 +355,358 @@ { "sourceMap": "app/server/security/lib/matches.coffee.js.map", "sourceMapRoot": "server/security/lib", - "path": "app/server/security/lib/matches.coffee.js" + "path": "app/server/security/lib/matches.coffee.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { "sourceMap": "app/server/security/lib/securityRulesWrapper.coffee.js.map", "sourceMapRoot": "server/security/lib", - "path": "app/server/security/lib/securityRulesWrapper.coffee.js" + "path": "app/server/security/lib/securityRulesWrapper.coffee.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { - "path": "app/lib/compatibility/i18next-1.7.3.js" + "path": "app/lib/compatibility/i18next-1.7.3.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { - "path": "app/lib/compatibility/moment.js" + "path": "app/lib/compatibility/moment.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { - "path": "app/lib/compatibility/underscore.string.js" + "path": "app/lib/compatibility/underscore.string.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { - "path": "app/lib/compatibility/xss.js" + "path": "app/lib/compatibility/xss.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { "sourceMap": "app/lib/app.coffee.js.map", "sourceMapRoot": "lib", - "path": "app/lib/app.coffee.js" + "path": "app/lib/app.coffee.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { "sourceMap": "app/lib/regexps.coffee.js.map", "sourceMapRoot": "lib", - "path": "app/lib/regexps.coffee.js" + "path": "app/lib/regexps.coffee.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { "sourceMap": "app/lib/security.coffee.js.map", "sourceMapRoot": "lib", - "path": "app/lib/security.coffee.js" + "path": "app/lib/security.coffee.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { "sourceMap": "app/lib/transformations.coffee.js.map", "sourceMapRoot": "lib", - "path": "app/lib/transformations.coffee.js" + "path": "app/lib/transformations.coffee.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { - "path": "app/server/emailTemplates/handlebars.newUserHtml.js" + "path": "app/server/emailTemplates/handlebars.newUserHtml.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { - "path": "app/server/emailTemplates/handlebars.newUserSubject.js" + "path": "app/server/emailTemplates/handlebars.newUserSubject.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { - "path": "app/server/emailTemplates/handlebars.resetPasswordHtml.js" + "path": "app/server/emailTemplates/handlebars.resetPasswordHtml.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { - "path": "app/server/emailTemplates/handlebars.resetPasswordSubject.js" + "path": "app/server/emailTemplates/handlebars.resetPasswordSubject.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { - "path": "app/server/exec/exec.js" + "path": "app/server/exec/exec.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { "sourceMap": "app/server/i18n/_.coffee.js.map", "sourceMapRoot": "server/i18n", - "path": "app/server/i18n/_.coffee.js" + "path": "app/server/i18n/_.coffee.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { "sourceMap": "app/server/i18n/en.coffee.js.map", "sourceMapRoot": "server/i18n", - "path": "app/server/i18n/en.coffee.js" + "path": "app/server/i18n/en.coffee.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { "sourceMap": "app/server/model/collections.coffee.js.map", "sourceMapRoot": "server/model", - "path": "app/server/model/collections.coffee.js" + "path": "app/server/model/collections.coffee.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { "sourceMap": "app/server/model/publications.coffee.js.map", "sourceMapRoot": "server/model", - "path": "app/server/model/publications.coffee.js" + "path": "app/server/model/publications.coffee.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { "sourceMap": "app/server/security/configs.coffee.js.map", "sourceMapRoot": "server/security", - "path": "app/server/security/configs.coffee.js" + "path": "app/server/security/configs.coffee.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { "sourceMap": "app/server/security/ipsets.coffee.js.map", "sourceMapRoot": "server/security", - "path": "app/server/security/ipsets.coffee.js" + "path": "app/server/security/ipsets.coffee.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { "sourceMap": "app/server/security/queries.coffee.js.map", "sourceMapRoot": "server/security", - "path": "app/server/security/queries.coffee.js" + "path": "app/server/security/queries.coffee.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { "sourceMap": "app/server/security/tuples.coffee.js.map", "sourceMapRoot": "server/security", - "path": "app/server/security/tuples.coffee.js" + "path": "app/server/security/tuples.coffee.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { "sourceMap": "app/server/security/users.coffee.js.map", "sourceMapRoot": "server/security", - "path": "app/server/security/users.coffee.js" + "path": "app/server/security/users.coffee.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { "sourceMap": "app/common/configs.defaults.coffee.js.map", "sourceMapRoot": "common", - "path": "app/common/configs.defaults.coffee.js" + "path": "app/common/configs.defaults.coffee.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { "sourceMap": "app/common/ipsets.defaults.coffee.js.map", "sourceMapRoot": "common", - "path": "app/common/ipsets.defaults.coffee.js" + "path": "app/common/ipsets.defaults.coffee.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { "sourceMap": "app/common/ipsets.hooks.coffee.js.map", "sourceMapRoot": "common", - "path": "app/common/ipsets.hooks.coffee.js" + "path": "app/common/ipsets.hooks.coffee.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { "sourceMap": "app/common/queries.defaults.coffee.js.map", "sourceMapRoot": "common", - "path": "app/common/queries.defaults.coffee.js" + "path": "app/common/queries.defaults.coffee.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { "sourceMap": "app/common/queries.hooks.coffee.js.map", "sourceMapRoot": "common", - "path": "app/common/queries.hooks.coffee.js" + "path": "app/common/queries.hooks.coffee.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { "sourceMap": "app/common/tuples.defaults.coffee.js.map", "sourceMapRoot": "common", - "path": "app/common/tuples.defaults.coffee.js" + "path": "app/common/tuples.defaults.coffee.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { "sourceMap": "app/common/tuples.hooks.coffee.js.map", "sourceMapRoot": "common", - "path": "app/common/tuples.hooks.coffee.js" + "path": "app/common/tuples.hooks.coffee.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { "sourceMap": "app/common/users.defaults.coffee.js.map", "sourceMapRoot": "common", - "path": "app/common/users.defaults.coffee.js" + "path": "app/common/users.defaults.coffee.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { "sourceMap": "app/server/cleanup.coffee.js.map", "sourceMapRoot": "server", - "path": "app/server/cleanup.coffee.js" + "path": "app/server/cleanup.coffee.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { "sourceMap": "app/server/configs.hooks.coffee.js.map", "sourceMapRoot": "server", - "path": "app/server/configs.hooks.coffee.js" + "path": "app/server/configs.hooks.coffee.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { "sourceMap": "app/server/cron.coffee.js.map", "sourceMapRoot": "server", - "path": "app/server/cron.coffee.js" + "path": "app/server/cron.coffee.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { "sourceMap": "app/server/executingAt.query.hooks.coffee.js.map", "sourceMapRoot": "server", - "path": "app/server/executingAt.query.hooks.coffee.js" + "path": "app/server/executingAt.query.hooks.coffee.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { "sourceMap": "app/server/execution.coffee.js.map", "sourceMapRoot": "server", - "path": "app/server/execution.coffee.js" + "path": "app/server/execution.coffee.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { "sourceMap": "app/server/fastrender.coffee.js.map", "sourceMapRoot": "server", - "path": "app/server/fastrender.coffee.js" + "path": "app/server/fastrender.coffee.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { "sourceMap": "app/server/fixtures.coffee.js.map", "sourceMapRoot": "server", - "path": "app/server/fixtures.coffee.js" + "path": "app/server/fixtures.coffee.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { "sourceMap": "app/server/helpers.coffee.js.map", "sourceMapRoot": "server", - "path": "app/server/helpers.coffee.js" + "path": "app/server/helpers.coffee.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { - "path": "app/server/meteor-security-patch.js" + "path": "app/server/meteor-security-patch.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { "sourceMap": "app/server/methods.coffee.js.map", "sourceMapRoot": "server", - "path": "app/server/methods.coffee.js" + "path": "app/server/methods.coffee.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { "sourceMap": "app/server/periodic.execution.coffee.js.map", "sourceMapRoot": "server", - "path": "app/server/periodic.execution.coffee.js" + "path": "app/server/periodic.execution.coffee.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { "sourceMap": "app/server/queries.hooks.coffee.js.map", "sourceMapRoot": "server", - "path": "app/server/queries.hooks.coffee.js" + "path": "app/server/queries.hooks.coffee.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { "sourceMap": "app/server/routing.coffee.js.map", "sourceMapRoot": "server", - "path": "app/server/routing.coffee.js" + "path": "app/server/routing.coffee.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { "sourceMap": "app/server/startup.coffee.js.map", "sourceMapRoot": "server", - "path": "app/server/startup.coffee.js" + "path": "app/server/startup.coffee.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { "sourceMap": "app/server/users.hooks.coffee.js.map", "sourceMapRoot": "server", - "path": "app/server/users.hooks.coffee.js" + "path": "app/server/users.hooks.coffee.js", + "assets": { + "FlowBAT.tar.gz": "assets/app/FlowBAT.tar.gz" + } }, { "sourceMap": "packages/service-configuration.js.map", diff --git a/private/bundle/programs/web.browser/5e50bc1ff2730b927bd5a8843b8180b18b6fba0e.css b/private/bundle/programs/web.browser/40985797a98c80d720d8ea9e7852aa5ed0291e35.css similarity index 98% rename from private/bundle/programs/web.browser/5e50bc1ff2730b927bd5a8843b8180b18b6fba0e.css rename to private/bundle/programs/web.browser/40985797a98c80d720d8ea9e7852aa5ed0291e35.css index f948e1a..4a4459f 100644 --- a/private/bundle/programs/web.browser/5e50bc1ff2730b927bd5a8843b8180b18b6fba0e.css +++ b/private/bundle/programs/web.browser/40985797a98c80d720d8ea9e7852aa5ed0291e35.css @@ -76,4 +76,4 @@ url('/fonts/roboto/Roboto-Black-webfont.svg#RobotoBlack') format('svg');font-weight:normal;font-style:normal}@font-face{font-family:'RobotoBlackItalic';src:url('/fonts/roboto/Roboto-BlackItalic-webfont.eot');src:url('/fonts/roboto/Roboto-BlackItalic-webfont.eot?#iefix') format('embedded-opentype'), url('/fonts/roboto/Roboto-BlackItalic-webfont.woff') format('woff'), url('/fonts/roboto/Roboto-BlackItalic-webfont.ttf') format('truetype'), - url('/fonts/roboto/Roboto-BlackItalic-webfont.svg#RobotoBlackItalic') format('svg');font-weight:normal;font-style:normal}body{background:#1d2939;font-family:'LatoRegular', 'Lucida Grande', 'Lucida Sans Unicode', Helvetica, sans-serif !important;line-height:21px;color:#636e7b;overflow:hidden}body.notfound,body.signin{background:#e4e7ea}input,select,textarea{font-family:'LatoRegular', 'Lucida Grande', 'Lucida Sans Unicode', Helvetica, sans-serif !important;color:#636e7b}a:focus,a:active{outline:none}h1,h2,h3,h4,h5{font-family:'LatoRegular', 'Lucida Grande', 'Lucida Sans Unicode', Helvetica, sans-serif}strong{font-family:'LatoBold';font-weight:normal}#preloader{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#e4e7ea;z-index:10000}#status{width:30px;height:30px;position:absolute;left:50%;top:50%;margin:-15px 0 0 -15px;font-size:32px}.headerbar{border-left:1px solid #eee;background:#fff}.headerbar::after{clear:both;display:block;content:''}.menutoggle{float:left;width:50px;height:50px;font-size:22px;cursor:pointer;float:left;color:#1d2939;border-right:1px solid #eee;-moz-transition:all 0.2s ease-out 0s;-webkit-transition:all 0.2s ease-out 0s;transition:all 0.2s ease-out 0s}.menutoggle:hover{color:#1d2939;background-color:#f7f7f7}.menutoggle .fa,.menutoggle .glyphicon{margin:14px 0 0 15px}.searchform input{width:250px;background:#fff url(/images/icon-search.png) no-repeat 95% center;float:left;padding:18px 20px;border:0;border-right:1px solid #eee;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;height:50px;font-size:14px}.searchform input:focus{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;border-color:#ddd}.searchform-left{margin-top:10px;margin-bottom:20px}.searchform-left .form-control{border:0;background:#131b26}.header-left{float:left}.header-right{float:right}.headermenu{list-style:none;margin:0;padding:0}.headermenu:after{clear:both;display:block;content:''}.headermenu>li{display:inline-block;float:left;border-left:1px solid #eee;position:relative}.headermenu .dropdown-toggle{padding:12px 10px;border-color:#fff;background:#fff;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border:0}.headermenu .dropdown-toggle:hover,.headermenu .dropdown-toggle:focus,.headermenu .dropdown-toggle:active,.headermenu .dropdown-toggle.active,.headermenu .open .dropdown-toggle.dropdown-toggle{background:#f9f9f9;color:#333;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.headermenu .dropdown-toggle img{vertical-align:middle;margin-right:5px;width:26px;-moz-border-radius:50px;-webkit-border-radius:50px;border-radius:50px}.headermenu .dropdown-toggle .caret{margin-left:5px}.headermenu .dropdown-menu{border:0;margin-top:0px;margin-right:-1px;-moz-border-radius:2px 0 2px 2px;-webkit-border-radius:2px 0 2px 2px;border-radius:2px 0 2px 2px;-moz-box-shadow:3px 3px 0 rgba(12,12,12,0.05);-webkit-box-shadow:3px 3px 0 rgba(12,12,12,0.05);box-shadow:3px 3px 0 rgba(12,12,12,0.05);padding:5px}.headermenu .dropdown-menu:after{border-bottom:6px solid #1d2939;border-left:6px solid transparent;border-right:6px solid transparent;content:"";display:inline-block;right:17px;position:absolute;top:-6px}.headermenu .dropdown-grid .grid-list{padding:20px}.headermenu .dropdown-menu li{display:block;margin:0;float:none;background:none;padding:15px 5px}.headermenu .dropdown-menu-usermenu li{padding:0}.headermenu .dropdown-menu-usermenu:after{right:95px}.headermenu .dropdown-menu li a{color:#94989d;font-size:13px;padding:7px 10px;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-transition:all 0.2s ease-out 0s;-webkit-transition:all 0.2s ease-out 0s;transition:all 0.2s ease-out 0s}.headermenu .dropdown-menu li a:hover{background:#1caf9a;color:#fff}.headermenu .dropdown-menu li i{font-size:11px;margin-right:5px}.headermenu .dropdown-menu-head{padding:0;min-width:300px}.headermenu .tp-icon{padding:12px 15px;height:50px;font-size:16px;background:#fff;color:#333;border-color:#fff;-moz-transition:all 0.2s ease-out 0s;-webkit-transition:all 0.2s ease-out 0s;transition:all 0.2s ease-out 0s}.headermenu .tp-icon+.dropdown-menu:after{right:17px}.headermenu .chat-icon{border-right:0}.headermenu .dropdown-menu-usermenu{background:#1d2939;min-width:200px}.headermenu .dropdown-menu-head ul{border:1px solid #ddd;border-top:0;padding:0 10px}.headermenu .dropdown-menu-head li a{color:#333;padding:0;opacity:1}.headermenu .dropdown-menu-head li a:hover{background:none;color:#428BCA;text-decoration:none}.headermenu .btn-group{margin-bottom:0}.dropdown-list li{padding:15px;overflow:hidden;border-bottom:1px solid #eee}.dropdown-list li:last-child{border-bottom:0}.dropdown-list .thumb{width:36px;float:left}.dropdown-list .thumb img{width:100%;display:block;vertical-align:middle}.dropdown-list .desc{margin-left:45px;display:block}.dropdown-list .desc h5{font-size:13px;margin-top:7px}.dropdown-list li:last-child{padding:7px 5px}.dropdown-list li .badge{float:right}.user-list{width:300px}.gen-list li a{display:block}.gen-list li a:hover{color:#333 !important;text-decoration:none}.gen-list li .name{font-size:13px;font-family:'LatoBold','Lucida Grande', 'Lucida Sans Unicode', Helvetica, sans-serif;line-height:21px;display:block}.gen-list li .msg{font-size:11px;line-height:normal;color:#999;display:block}.leftpanel{width:240px;position:absolute;top:0;left:0;z-index:100}.sticky-leftpanel{position:fixed;height:100%;overflow-y:auto}.logopanel{padding:10px;background:#fff}.logopanel h1{font-size:30px;font-family:'LatoBold', 'Lucida Grande', 'Lucida Sans Unicode', Helvetica, sans-serif;letter-spacing:-1.5px;color:#1d2939;line-height:30px;margin:0}.logopanel h1 span{color:#1caf9a}.leftpanelinner{padding:5px 15px}.leftpanel .searchform{display:none}.leftpanel .searchform::after{content:'';display:block;clear:both}.leftpanel .searchform input{padding:10px;height:auto;width:100%;margin:5px 0 20px 0;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}.leftpanel .userlogged{margin:0;padding:0;padding-bottom:15px;margin-bottom:15px;border-bottom:1px solid rgba(255,255,255,0.1);display:none}.leftpanel .userlogged .media-object{width:40px;-moz-border-radius:100px;-webkit-border-radius:100px;border-radius:100px;float:left;border:2px solid #1CAF9A;padding:2px;margin-left:2px}.leftpanel .userlogged .media-body{margin-left:50px;color:#ccc}.leftpanel .userlogged .media-body h4{font-size:15px;margin:0}.leftpanel .userlogged .media-body span{font-style:italic;font-size:11px;opacity:0.5}.sidebartitle{font-size:11px;text-transform:uppercase;color:#999;margin-bottom:10px}.nav-bracket{margin-bottom:30px}.nav-bracket>li>a{color:#8f939e;padding:7px 10px}.nav-bracket>li>a:hover,.nav-bracket>li>a:active,.nav-bracket>li>a:focus{background-color:#fff;color:#1d2939;-moz-box-shadow:0 3px 0 rgba(0,0,0,0.2);-webkit-box-shadow:0 3px 0 rgba(0,0,0,0.2);box-shadow:0 3px 0 rgba(0,0,0,0.2)}.nav-bracket>li.nav-parent>a{background:transparent url(/images/plus-white.png) no-repeat 96% center}.nav-bracket>li.nav-parent>a:focus{background-color:none;color:#8F939E;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.nav-bracket>li.nav-parent>a:hover,.nav-bracket>li.nav-parent>a:active{color:#1d2939;background-color:#fff;background-image:url(/images/plus.png)}.nav-bracket>li.nav-active>a{background-color:#fff;background-image:url(/images/minus.png);color:#1d2939;-moz-box-shadow:0 3px 0 rgba(0,0,0,0.2);-webkit-box-shadow:0 3px 0 rgba(0,0,0,0.2);box-shadow:0 3px 0 rgba(0,0,0,0.2)}.nav-bracket>li.nav-active>a:hover{background-image:url(/images/minus.png);background-repeat:no-repeat}.nav-bracket>li.nav-active>a:focus{color:#1d2939}.nav-bracket>li.active>a,.nav-bracket>li.active>a:hover,.nav-bracket>li.active>a:focus{background-color:#1caf9a;color:#fff}.nav-bracket>li.active>a{-moz-box-shadow:0 3px 0 rgba(0,0,0,0.2);-webkit-box-shadow:0 3px 0 rgba(0,0,0,0.2);box-shadow:0 3px 0 rgba(0,0,0,0.2)}.nav-bracket>li.nav-parent.active>a{background-image:url(/images/plus.png)}.nav-bracket>li.nav-active.active>a{background-image:url(/images/minus.png)}.nav-bracket>li.nav-active.active>a:hover{background-image:url(/images/minus.png)}.nav-bracket li .fa,.nav-bracket li .glyphicon{font-size:16px;vertical-align:middle;margin-right:10px;width:16px;text-align:center}.nav-bracket>li>a>.badge{margin-top:2px}.nav-bracket .children{list-style:none;display:none;margin:5px 0;padding:0}.nav-bracket .children>li>a{color:#94989d;font-size:13px;display:block;padding:5px 0 5px 27px;-moz-transition:all 0.2s ease-out 0s;-webkit-transition:all 0.2s ease-out 0s;transition:all 0.2s ease-out 0s}.nav-bracket .children>li>a>span{margin-top:2px}.nav-bracket .children>li>a:hover,.nav-bracket .children>li>a:active,.nav-bracket .children>li>a:focus{text-decoration:none;color:#1caf9a}.nav-bracket .children>li .fa{font-size:12px;opacity:0.5;margin-right:5px;text-align:left;width:auto;vertical-align:baseline}.nav-bracket .children>li.active>a{color:#1caf9a}.nav-bracket .children ul{margin-left:12px;border:0}.infosummary{margin:30px 0}.infosummary ul{padding:0;margin:20px 0 0;list-style:none;border-top:1px solid rgba(255,255,255,0.05)}.infosummary li{padding:10px 0;border-bottom:1px solid rgba(255,255,255,0.05)}.infosummary li:after{clear:both;display:block;content:''}.infosummary .datainfo{float:left;line-height:normal}.infosummary .datainfo h4{margin:0;font-size:16px;color:#fff;opacity:0.7}.infosummary span{font-size:11px;line-height:normal;text-transform:uppercase;font-size:10px;opacity:0.4}.infosummary .chart{float:right;margin-top:5px;opacity:0.6}.mainpanel{margin-left:240px;background:#e4e7ea;min-height:1000px}.pageheader{padding:15px;border-bottom:1px solid #d3d7db;border-top:1px solid #eee;background:#f7f7f7;position:relative}.pageheader h2{font-size:28px;color:#1D2939;letter-spacing:-0.5px;margin:0}.pageheader .glyphicon,.pageheader .fa{font-size:24px;margin-right:5px;padding:6px 7px;border:2px solid #1D2939;-moz-border-radius:50px;-webkit-border-radius:50px;border-radius:50px}.pageheader .fa.fa-pencil{padding:6px 9px}.pageheader .fa.fa-hand-o-up{padding:6px 9px 6px 7px}.pageheader .fa-file-o{padding:6px 10px}.pageheader .fa-user{padding:6px 10px}.pageheader .fa-file-text{padding:6px 10px}.pageheader .fa-map-marker{padding:6px 12px}.pageheader .fa-dollar{padding:6px 12px}.pageheader .fa-clock-o{padding:6px 8px}.pageheader h2 span{font-size:13px;text-transform:none;color:#999;font-style:italic;vertical-align:middle;letter-spacing:0}.pageheader h2 span::before{content:'/';margin:0 10px 0 5px;color:#ccc}.pageheader .breadcrumb-wrapper{position:absolute;top:23px;right:25px}.pageheader .breadcrumb-wrapper .label{color:#999;text-transform:uppercase;font-size:11px;font-weight:normal;display:inline-block}.pageheader .breadcrumb{background:none;display:inline-block;padding:0}.pageheader .breadcrumb li{font-size:12px}.pageheader .breadcrumb li.active{color:#333}.contentpanel{padding:20px;position:relative}.contentpanel::after{clear:both;display:block;content:''}form .form-group:last-child{margin-bottom:0}.row-pad-5{margin-left:-5px;margin-right:-5px}.row-pad-5 [class*="col-lg"],.row-pad-5 [class*="col-md"],.row-pad-5 [class*="col-sm"]{padding-left:5px;padding-right:5px;margin-bottom:10px}.subtitle{font-size:13px;text-transform:uppercase;color:#333;font-family:'LatoBold';margin-bottom:15px;margin-top:0}.subtitle-lined{border-bottom:1px dotted #ddd;padding-bottom:5px}p{margin-bottom:10px}.panel-stat{background:none}.panel-stat .panel-heading{padding:15px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.panel-stat .stat{color:#fff;max-width:250px}.panel-stat .stat img{text-align:center}.panel-stat i{font-size:30px;border:1px solid #fff;padding:15px;border-radius:50px;opacity:0.5}.panel-stat .stat-label{text-transform:uppercase;font-size:11px;opacity:0.75;display:block;line-height:normal;margin-bottom:2px}.panel-stat h1{margin:0;line-height:36px;font-family:'Helvetica Neue', sans-serif;font-size:38px}.panel-stat h4{margin:0;font-family:'Helvetica Neue', sans-serif}.sublabel{display:block;font-size:12px;margin-bottom:2px}.dashboard-datatable .dataTables_filter{float:left}.ckbox,.rdio{position:relative}.ckbox input[type="checkbox"],.rdio input[type="radio"]{opacity:0}.ckbox label,.rdio label{padding-left:10px;cursor:pointer;margin-bottom:7px !important}.ckbox label:before{width:18px;height:18px;position:absolute;top:1px;left:0;content:'';display:inline-block;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;border:1px solid #bbb;background:#fff}.ckbox input[type="checkbox"]:disabled+label{color:#999}.ckbox input[type="checkbox"]:disabled+label:before{background-color:#eee}.ckbox input[type="checkbox"]:checked+label::after{font-family:'FontAwesome';content:"\F00C";position:absolute;top:0;left:3.5px;display:inline-block;font-size:11px;width:16px;height:16px;color:#fff}.ckbox-default input[type="checkbox"]:checked+label:before{border-color:#999}.ckbox-default input[type="checkbox"]:checked+label::after{color:#333}.ckbox-primary input[type="checkbox"]:checked+label:before{border-color:#357EBD;background-color:#428BCA}.ckbox-warning input[type="checkbox"]:checked+label:before{border-color:#EEA236;background-color:#F0AD4E}.ckbox-success input[type="checkbox"]:checked+label:before{border-color:#1CAF9A;background-color:#1CAF9A}.ckbox-danger input[type="checkbox"]:checked+label:before{border-color:#D43F3A;background-color:#D9534F}.rdio label:before{width:18px;height:18px;position:absolute;top:1px;left:0;content:'';display:inline-block;-moz-border-radius:50px;-webkit-border-radius:50px;border-radius:50px;border:1px solid #bbb;background:#fff}.rdio input[type="radio"]:disabled+label{color:#999}.rdio input[type="radio"]:disabled+label:before{background-color:#eee}.rdio input[type="radio"]:checked+label::after{content:'';position:absolute;top:5px;left:4px;display:inline-block;font-size:11px;width:10px;height:10px;background-color:#444;-moz-border-radius:50px;-webkit-border-radius:50px;border-radius:50px}.rdio-default input[type="radio"]:checked+label:before{border-color:#999}.rdio-primary input[type="radio"]:checked+label:before{border-color:#428BCA}.rdio-primary input[type="radio"]:checked+label::after{background-color:#428BCA}.rdio-warning input[type="radio"]:checked+label:before{border-color:#F0AD4E}.rdio-warning input[type="radio"]:checked+label::after{background-color:#F0AD4E}.rdio-success input[type="radio"]:checked+label:before{border-color:#1CAF9A}.rdio-success input[type="radio"]:checked+label::after{background-color:#1CAF9A}.rdio-danger input[type="radio"]:checked+label:before{border-color:#D9534F}.rdio-danger input[type="radio"]:checked+label::after{background-color:#D9534F}pre{font-size:12px;color:#C7254E;border:1px solid #ddd;padding:8px;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;background:#fff}label.error{color:#B94A48;margin-top:2px}label.error:empty{display:none !important}.asterisk{color:#D9534F}div.error{margin-bottom:20px;display:none;position:relative}div.error label.error{display:block;padding-left:25px;position:relative}div.error label.error:before{font-family:'Glyphicons Halflings';content:'\e101';position:absolute;top:-2px;left:0;font-size:16px;color:#D9534F;display:inline-block}.bootstrap-timepicker .dropdown-menu{top:40px}.editable{padding:10px;border:1px solid #fcfcfc;margin-bottom:20px}.editable:hover{border:1px solid #ccc}.editable h4{color:#333}.basic-wizard .nav li a{background:#e4e7ea;border-bottom:1px solid #ccc;color:#4A535E;border-right:1px solid #ccc;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;opacity:0.75}.basic-wizard .nav li:last-child a{border-right:0}.basic-wizard .nav li a:hover{background-color:#f7f7f7;opacity:1}.basic-wizard .nav li.active a,.basic-wizard .nav li.active a:focus,.basic-wizard .nav li.active a:active{background:#fcfcfc;border-bottom-color:#fcfcfc;color:#333;opacity:1}.basic-wizard ul li a span{font-family:'LatoBold', sans-serif}.basic-wizard .pager{margin:0;border-top:1px solid #ddd;background:#f7f7f7;padding:10px}.basic-wizard .pager li a{-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;border-color:#357EBD;background-color:#428BCA;color:#fff}.basic-wizard .pager li a:hover{background-color:#3276B1;border-color:#285E8E}.basic-wizard .pager li.disabled a{background:#eee;color:#999;border-color:#ccc}.basic-wizard .progress{height:12px;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}.basic-wizard .nav-disabled-click li a:hover,.basic-wizard .nav-disabled-click li a:active,.basic-wizard .nav-disabled-click li a:focus{background-color:#E4E7EA;opacity:0.75;color:#4A535E;cursor:default}.basic-wizard .nav-disabled-click li.active a:hover,.basic-wizard .nav-disabled-click li.active a:active,.basic-wizard .nav-disabled-click li.active a:focus{background:#fcfcfc;color:#333;opacity:1}.basic-wizard .tab-content{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.tab-pane::after{clear:both;display:block;content:''}.btn-demo::after{clear:both;display:block;content:''}.btn-demo .btn{float:left;margin:0 10px 10px 0}.fonticon-list{list-style:none;margin:20px 0;padding:0}.fontawesome-list{list-style:none;padding:0}.fonticon-list li,.fontawesome-list li{display:block;margin-bottom:5px}.fonticon-list li span,.fontawesome-list li span{color:#333;vertical-align:middle;margin-right:8px;min-width:20px;display:inline-block;width:20px}.tooltip-example .btn,.popover-example .btn{margin:0 5px 5px 0}.tooltipflot{background-color:rgba(0,0,0,0.75);font-size:11px;color:#fff;padding:3px 10px;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}.jqstooltip{min-height:25px;border:0;min-width:30px;height:auto !important;width:auto !important}.tinystat{display:inline-block}.tinystat .chart,.tinystat .datainfo{display:inline-block;vertical-align:middle}.tinystat .chart{margin-right:5px}.tinystat .text-muted{text-transform:uppercase;font-size:10px}.tinystat h4{margin:0;color:#333;font-family:'LatoBold';line-height:normal;font-size:16px}.widget-quick-status-post .nav-tabs>li>a{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.widget-quick-status-post .panel-body{padding:0}.widget-messaging .panel-btns .panel-edit{padding:15px 17px;opacity:0.5;font-size:24px;margin-top:-18px;margin-right:-20px;position:relative}.widget-messaging .panel-btns .panel-edit:hover{opacity:1}.widget-messaging .panel-body{padding:0}.widget-messaging ul{list-style:none;padding:0;margin:0}.widget-messaging ul li{padding:15px;border-top:1px solid #eee;background-color:#fff}.widget-messaging ul li:hover{background-color:#fcfcfc}.widget-messaging ul li:first-child{border-top:0}.widget-messaging .sender{font-size:13px;color:#333;margin:0;font-family:'LatoBold';line-height:normal}.widget-messaging ul li small{line-height:normal}.widget-today .panel-heading,.widget-time .panel-heading{height:115px}.widget-today .glyphicon,.widget-today .fa{font-size:72px;color:#fff;opacity:1}.widget-time .glyphicon,.widget-time .fa{font-size:60px;color:#fff;opacity:1}.widget-today .today,.widget-time .today{line-height:normal;margin:0;color:#333;font-family:'LatoBold';font-size:20px}.widget-photoday .panel-body{padding:0}.widget-photoday .photoday img{width:100%;display:block;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0}.widget-photoday .photo-details{padding:15px}.widget-photoday .photo-title{color:#333;font-size:16px;margin:0;font-family:'LatoBold';line-height:normal}.widget-photoday .photo-details small{display:block}.widget-photoday .photo-meta{list-style:none;padding:0;margin:0;border-top:1px solid #e3e3e3;background-color:#f7f7f7}.widget-photoday .photo-meta li{display:table-cell;width:1%;text-align:center;border-left:1px solid #e3e3e3}.widget-photoday .photo-meta li:first-child{border-left:0}.widget-photoday .photo-meta li a,.widget-photoday .photo-meta li span{padding:15px 10px;display:block;color:#999;font-size:12px}.widget-photoday .photo-meta li a:hover{color:#666;text-decoration:none}.widget-bloglist .media{border-bottom:1px solid #eee;padding:0}.widget-bloglist .media .thumbnail{margin-bottom:15px}.widget-weather{overflow:hidden}.widget-weather .panel-body{padding:0;background-color:#1D2939}.widget-weather .row{margin:0}.widget-weather .temp,.widget-weather .weather{padding:0}.widget-weather .temp{background-color:#1CAF9A;color:#fff;padding:10px 0}.widget-weather .temp h1{font-size:60px;font-family:'LatoLight'}.widget-weather .temp h1 span{width:20px;height:20px;display:inline-block;margin-left:-10px}.widget-weather .temp h5{text-transform:uppercase}.widget-weather .weather-icon{color:#666;font-size:60px;background-color:#fff;display:block;padding:20px 0}.widget-weather .weather>div{width:50%;text-align:center;color:#fff;font-size:14px;padding-top:10px}.widget-profile .panel-heading{position:relative}.widget-profile .cover{position:absolute;top:0;left:0;height:105px;overflow:hidden;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0}.widget-profile .cover img{width:100%;display:block}.widget-profile .panel-body{position:relative;padding:0}.widget-profile-img{position:relative;margin-top:30px;margin-left:15px}.widget-profile-title{background:#428BCA;margin-top:-77px;padding:15px 0 15px 120px;color:#fff}.widget-profile-title h4{font-size:18px;margin:0;line-height:normal}.widget-profile-title small{line-height:normal}.widget-profile blockquote{font-size:18px;border-left:0;margin:0;color:#555;padding:15px}.widget-profile-title .fa{margin-right:7px}.widget-profile .row{margin:0}.widget-profile .row>div{padding:0}.widget-profile .row>div>span{display:block;border-right:1px solid rgba(255,255,255,0.15);font-size:14px;padding:15px 10px;text-transform:uppercase;background:#1D2939;color:#fff}.widget-profile .row>div:first-child span{-moz-border-radius:0 0 0 3px;-webkit-border-radius:0 0 0 3px;border-radius:0 0 0 3px}.widget-profile .row>div:last-child span{border-right:0;-moz-border-radius:0 0 3px 0;-webkit-border-radius:0 0 3px 0;border-radius:0 0 3px 0}.widget-todo .panel-btns i{font-size:12px}.widget-todo .todo-list{padding:0;margin:0;list-style:none}.widget-todo .panel-body{padding:0}.widget-todo .todo-list li{border-bottom:1px solid #eee;padding:15px 10px 8px 20px}.widget-todo .todo-list li input:checked+label{text-decoration:line-through}.widget-todo .todo-list .todo-form{padding-bottom:15px}.widget-todo .todo-list li .btn{margin:0;padding:6px 10px}.widget-slider .carousel-control.right,.widget-slider .carousel-control.left{background:none}.widget-slider .carousel-control{width:auto;text-shadow:none;color:#fff;bottom:auto;top:-55px;padding:0;line-height:normal}.widget-slider .carousel-control.left{left:auto;right:25px}.widget-slider .carousel-control span{line-height:normal;font-size:18px}.widget-slider .media{padding-bottom:0}.widget-slider .carousel-indicators{top:-53px;right:0;bottom:auto;left:auto;width:auto}.btn-compose-email{padding:10px 0;margin-bottom:20px}.nav-email>li>a>.badge{margin-top:2px}.nav-email>li>a{color:#444}.nav-email>li>a>i{width:16px;text-align:center;margin-right:10px}.nav-email>li>a:hover{background-color:#d8dcdf}.table-email{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;border-bottom:1px solid #eee;margin:0;background-color:#f7f7f7}.table-email tr.unread td{background-color:#fff}.table-email tbody>tr>td{vertical-align:middle}.table-email tr:hover{background-color:#eee;cursor:pointer}.table-email tr.selected td{background-color:#eee}.table-email .ckbox{width:18px;height:19px}.table-email .ckbox input[type="checkbox"]:checked+label:after{top:2px}.table-email .star{color:#ccc}.table-email .star-checked{color:#F0AD4E}.table-email td:first-child{width:30px}.table-email td:nth-child(2){width:30px}.table-email .media{margin:0;padding:0}.table-email .media-object{width:35px}.table-email .media h4{margin:0;font-size:14px;line-height:normal;font-family:'LatoBold', sans-serif}.table-email .media-meta{font-size:11px;color:#999}.table-email .email-summary{margin:2px 0 0 0}.table-email .email-summary strong{color:#333}.read-panel{margin-top:10px;border-top:1px solid #eee;padding-top:20px}.read-panel .media-object{width:35px}.read-panel .media h4{margin:2px 0 0 0;font-size:14px;line-height:normal}.read-panel .media-meta{font-size:12px}.email-subject{color:#333}.dataTables_length .chosen-container{min-width:75px}.dataTables_length .chosen-container-single .chosen-single{padding-right:0}.table-action{text-align:center}.table-action-hide a{opacity:0}.table-action a,.table-action-hide a{display:inline-block;margin-right:5px;color:#666}.table-action a:hover,.table-action-hide a:hover{color:#333}.table-action a:last-child,.table-action-hide a:last-child{margin-right:0}.external-event{background:#428BCA;margin-bottom:5px;padding:6px 10px;color:#fff;font-size:13px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.filemanager-options{list-style:none;margin:0;padding:0;margin-bottom:20px;background:#fcfcfc;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 3px 0 rgba(12,12,12,0.03);-webkit-box-shadow:0 3px 0 rgba(12,12,12,0.03);box-shadow:0 3px 0 rgba(12,12,12,0.03)}.filemanager-options li{display:inline-block;padding:12px 15px;border-right:1px solid #eee;font-size:12px;color:#666}.filemanager-options li a{color:#666}.filemanager-options li a.disabled{opacity:0.5;cursor:default}.filemanager-options li a.disabled:hover{text-decoration:none}.filemanager-options li i{font-size:14px;margin-right:5px;color:#444}.filemanager-options .ckbox label{margin:0 !important}.filemanager-options .filter-type{float:right;border-right:0;border-left:1px solid #eee}.filemanager-options .filter-type a{display:inline-block;margin-right:10px}.filemanager-options .filter-type a:last-child{margin-right:0}.filemanager-options .filter-type a:first-child{margin-left:10px}.filemanager-options .filter-type a.active{text-decoration:underline;color:#2A6496}.filemanager .thmb{border:1px solid #fcfcfc;background:#fcfcfc;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;padding:10px;margin-bottom:20px;position:relative;-moz-box-shadow:0 3px 0 rgba(12,12,12,0.03);-webkit-box-shadow:0 3px 0 rgba(12,12,12,0.03);box-shadow:0 3px 0 rgba(12,12,12,0.03)}.filemanager .thmb.checked{border-color:#ccc}.filemanager .thmb::after{clear:both;display:block;content:''}.filemanager .ckbox{position:absolute;top:15px;left:15px;display:none}.filemanager .fm-group{position:absolute;top:15px;right:15px;display:none}.filemanager .fm-toggle{padding:1px 4px;line-height:normal;background:#fff;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}.filemanager .fm-menu{min-width:120px}.filemanager .fm-menu a{font-size:12px;color:#333}.filemanager .fm-menu i{margin-right:7px;color:#999;width:16px;font-size:13px}.filemanager .thmb-prev{background:#eee;overflow:hidden}.filemanager .thmb-prev a{display:block}.filemanager .fm-title{margin-bottom:0;font-size:13px}.filemanager .fm-title a{overflow:hidden;text-overflow:ellipsis;display:block}.fm-sidebar{padding-left:10px}.fm-sidebar .subtitle a{color:#999;font-size:11px}.fm-sidebar .subtitle a:hover{text-decoration:none;color:#333}.folder-list{list-style:none;padding:0;margin:0}.folder-list li{display:block;border-bottom:1px solid #ddd}.folder-list li a{display:block;padding:5px 0;color:#666}.folder-list li a:hover{color:#333;text-decoration:none}.folder-list li i{margin-right:10px;width:16px}.fm-sidebar .tag-list{list-style:none;padding:0;margin:0}.fm-sidebar .tag-list li{float:left;margin-right:5px;margin-bottom:5px}.fm-sidebar .tag-list li a{display:block;padding:2px 7px;font-size:11px;background:#fcfcfc;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;color:#666}.fm-sidebar .tag-list li a:hover{color:#fff;text-decoration:none;background:#428BCA}.profile-name{margin:0;margin-bottom:10px;color:#333}.profile-location,.profile-position{font-size:13px;margin-bottom:3px}.profile-location .fa,.profile-position .fa{width:16px;margin-right:8px;text-align:center}.profile-header{margin-bottom:30px}.profile-header .btn .fa{margin-right:7px}.profile-social-list{list-style:none;margin:0;padding:0}.profile-social-list li{border-bottom:1px solid #ddd;padding:5px 0}.profile-social-list li:first-child{padding-top:0}.profile-social-list li .fa{margin-right:10px;width:16px}.activity-list{padding:20px 10px}.activity-list .act-media{border-bottom:1px solid #eee}.activity-list .act-thumb{width:28px;vertical-align:middle}.activity-list .act-media-body{line-height:16px}.activity-list .media-body p{line-height:21px;font-size:13px}.activity-list .media-title{font-family:'LatoBold';font-size:15px;margin-bottom:0}.activity-list .blog-media{padding-bottom:0}.activity-list .blog-media .media-object{width:120px;margin-right:10px;margin-top:5px}.activity-list .blog-media .media-title{margin:0}.activity-list .img-single img{width:50%}.uploadphoto-list{list-style:none;padding:0;margin:0;margin-top:20px}.uploadphoto-list li{width:20%;float:left}.uploadphoto-list li a{display:block;margin-right:5px}.follower-list{padding:10px}.follower-list .media{border-bottom:1px solid #eee}.follower-list .btn .fa{margin-right:5px}.follower-list .media-object{margin-right:10px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.follower-name{color:#333;margin:0;font-size:18px;margin-bottom:5px}.events{padding:10px}.events .subtitle{margin-bottom:20px}.events .media-object{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.events-list{list-style:none;margin:0;padding:0}.events-list .event-body{font-size:13px}.event-body small{display:block}.event-body small .fa{margin-right:5px;width:14px;text-align:center}.event-body p{margin-top:10px}.event-title{margin:0;margin-bottom:5px;font-size:16px;font-family:'LatoBold';line-height:normal}.blog-item{background:#fcfcfc;margin-bottom:20px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 3px 0 rgba(12,12,12,0.03);-webkit-box-shadow:0 3px 0 rgba(12,12,12,0.03);box-shadow:0 3px 0 rgba(12,12,12,0.03);position:relative}.blog-img img{-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0}.blog-details{padding:15px}.blog-title{font-family:'LatoBold';margin:0;font-weight:normal}.blog-title a{color:#333}.blog-meta{list-style:none;padding:0;margin:0;margin-top:10px}.blog-meta::after{clear:both;display:block;content:''}.blog-meta li{float:left;padding:0 5px;border-right:1px solid #ddd;line-height:normal;font-size:11px;margin-bottom:5px}.blog-meta li:first-child{padding-left:0}.blog-meta li:last-child{padding-right:0;border-right:0}.blog-summary{font-size:13px}.blog-summary p{margin:10px 0}.blog-summary .btn{margin-top:10px}.blog-quote .quote{margin:0;font-size:18px;line-height:24px}.blog-quote .quote a{padding:15px;background:#1d2939;color:#dadfe6;display:block;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;text-align:center}.blog-quote .quote a:hover{text-decoration:none;background:#2c394c}.blog-quote .quote-author{display:block;font-family:'LatoRegular';opacity:0.5}.blog-quote .blog-meta{margin-top:3px}.blog-video{-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;overflow:hidden;height:0;padding-top:30px;padding-bottom:56.25%;position:relative}.blog-video iframe{position:absolute;width:100%;height:100%;border:0;top:0;left:0}.blog-quote .quote-primary a{background-color:#428BCA}.blog-quote .quote-primary a:hover{background-color:#357EBD}.blog-quote .quote-success a{background-color:#1CAF9A;color:#fff}.blog-quote .quote-success a:hover{background-color:#17A08C}.blog-quote .quote-danger a{background-color:#D9534F;color:#fff}.blog-quote .quote-danger a:hover{background-color:#D43F3A}.panel-blog .blog-img img{width:100%}.blogsingle-title{font-family:'LatoRegular';color:#333;margin:0}.blog-content{max-width:975px}.authorpanel{margin:20px 0;border-top:1px solid #ddd;border-bottom:1px solid #ddd;padding:20px 0}.authorpanel::after{clear:both;display:block;content:''}.authorpanel .media{padding:0}.authorpanel .media-object{margin-right:15px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.authorpanel p{margin-bottom:0;font-size:13px}.blog-sidebar{font-size:13px;padding-left:5px;margin-top:5px}.sidebar-list{list-style:none;padding:0;margin:0}.sidebar-list li{display:block;border-bottom:1px solid #ddd}.sidebar-list li a{padding:7px 0;display:block}.sidebar-list li i{display:inline-block;margin-right:5px}.comment-list .media{border-bottom:1px solid #ddd}.comment-list .media-object{width:60px;margin-right:10px}.comment-list h4{margin:0;color:#333;font-size:16px}.comment-list .media-body{font-size:13px;position:relative}.comment-list .reply{padding:3px 8px;line-height:normal;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}.comment-list .media-body p:last-child{margin-bottom:0}.comment-list .media-body .media:last-child{padding-bottom:0;border-bottom:0}.letter-list{list-style:none;padding:0;margin:0;-moz-box-shadow:0 3px 0 rgba(12,12,12,0.03);-webkit-box-shadow:0 3px 0 rgba(12,12,12,0.03);box-shadow:0 3px 0 rgba(12,12,12,0.03)}.letter-list li{border-left:1px solid #eee;display:table-cell;width:1%}.letter-list li:first-child{border-left:0}.letter-list li a{display:block;padding:8px 0;text-align:center;text-transform:uppercase;background:#f7f7f7;-moz-transition:all 0.2s ease-out 0s;-webkit-transition:all 0.2s ease-out 0s;transition:all 0.2s ease-out 0s}.letter-list li:first-child a{-moz-border-radius:3px 0 0 3px;-webkit-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.letter-list li:last-child a{-moz-border-radius:0 3px 3px 0;-webkit-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.letter-list li a:hover{color:#fff;background:#428BCA;text-decoration:none;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.people-item{background:#fcfcfc;padding:20px;font-size:13px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 3px 0 rgba(12,12,12,0.03);-webkit-box-shadow:0 3px 0 rgba(12,12,12,0.03);box-shadow:0 3px 0 rgba(12,12,12,0.03);margin-bottom:20px}.people-item .media{padding:0}.people-item .media-object{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;margin-right:10px;width:110px;height:110px}.people-item .fa{margin-right:5px}.person-name{margin:0 0 5px 0;color:#428BCA}.people-item .social-list{margin-top:10px;margin-bottom:0;list-style:none;padding:0}.people-item .social-list::after{clear:both;display:block;content:''}.people-item .social-list li{float:left;margin-right:5px;margin-bottom:5px}.people-item .social-list li a{font-size:16px;border:1px solid #ddd;padding:3px 5px;width:30px;display:block;text-align:center;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;color:#666}.people-item .social-list li a:hover{background-color:#eee;color:#333}.people-item .social-list li a .fa{margin-right:0}.notfoundpanel{text-align:center;margin-top:10%;width:600px;margin:10% auto 0 auto}.notfoundpanel h1{font-size:130px;font-family:'LatoBold', sans-serif;color:#333;margin:0;line-height:130px}.notfoundpanel h3{color:#333;margin:0}.notfound h4{font-size:14px}.notfoundpanel form{width:350px;margin:20px auto 0 auto}.notfoundpanel .form-control{width:250px;float:left}.nav-sr li{border-bottom:1px solid #ddd}.nav-sr li a{padding:5px 0;color:#555}.nav-sr li a:hover{background:none;color:#333}.nav-sr li a i{margin-right:5px}.results-list .media{border-bottom:1px solid #eee}.results-list .media-object{width:125px;margin-right:10px}.results-list .filename{margin:0;font-size:16px}.results-list .media-body{line-height:18px}.table-invoice{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;border-bottom:1px solid #eee;margin-top:20px}.table-invoice thead>tr>th{background:none}.table-invoice thead>tr>th:last-child,.table-invoice thead>tr>th:nth-child(3),.table-invoice thead>tr>th:nth-child(2){text-align:right}.table-invoice tbody>tr>td:last-child,.table-invoice tbody>tr>td:nth-child(3),.table-invoice tbody>tr>td:nth-child(2){width:15%;text-align:right}.table-total{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;float:right}.table-total>tbody>tr>td{border:0}.table-total>tbody>tr>td:last-child{border-bottom:1px solid #ddd;width:15%;text-align:right}.table-total>tbody>tr>td:first-child{text-align:right;color:#333}.timeline-post .panel-body{padding:0}.timeline-post .form-control{border:0;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;resize:vertical}.timeline-post .form-control:focus{-moz-box-shdow:none;-webkit-box-shadow:none;box-shadow:none}.timeline-post .panel-footer{padding:10px;background:#f7f7f7}.timeline-btns{padding:5px}.timeline-btns a{display:inline-block;font-size:14px;width:20px;height:20px;color:#ccc;text-align:center;margin-right:5px}.timeline-btns a:hover{color:#666}.panel-timeline .panel-heading{padding:10px 10px 6px 10px;border-bottom:0}.panel-timeline .panel-body{padding:0 10px}.panel-timeline .panel-heading .media{margin:0;padding:0}.panel-timeline .panel-heading .media-object,.panel-timeline .panel-footer .media-object{width:32px;border-radius:1px}.panel-timeline .panel-body .media{margin-top:10px;padding-bottom:10px}.panel-timeline .panel-body .media-object{width:150px}.panel-timeline .panel-body h4{font-size:16px;margin-bottom:5px;font-family:'LatoBold', sans-serif}.panel-timeline h4{margin:0;font-size:13px;line-height:normal}.panel-timeline .panel-footer{padding:10px}.panel-timeline .panel-footer .form-control{padding:8px 10px;border-radius:0}.timeline-btns{padding:10px}.timeline-btns:after{clear:both;display:block;content:''}.timeline-video{-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;overflow:hidden;height:0;padding-top:30px;padding-bottom:56.25%;position:relative}.timeline-video iframe{position:absolute;width:100%;height:100%;border:0;top:0;left:0}.lockedpanel{width:250px;margin:10% auto 0 auto;text-align:center}.lockedpanel .loginuser{text-align:center}.lockedpanel .loginuser img{-moz-border-radius:100px;-webkit-border-radius:100px;border-radius:100px;background:rgba(255,255,255,0.4);padding:5px}.lockedpanel .locked{font-size:42px;margin-bottom:20px}.lockedpanel .logged{margin-top:20px}.lockedpanel .logged h4{margin:0;font-size:21px;color:#333}.lockedpanel form{margin-top:20px}.lockedpanel form .btn{display:block;margin-top:10px}.signinpanel{width:780px;margin:10% auto 0 auto}.signinpanel .logopanel{float:none;width:auto;padding:0;background:none}.signinpanel .signin-info ul{list-style:none;padding:0;margin:20px 0}.signinpanel .signin-info a{color:#333}.signinpanel .form-control{display:block;margin-top:15px}.signinpanel .uname{background:#fff url(/images/user.png) no-repeat 95% center}.signinpanel .pword{background:#fff url(/images/locked.png) no-repeat 95% center}.signinpanel .btn{margin-top:15px}.signinpanel form{background:rgba(255,255,255,0.2);border:1px solid #ccc;-moz-box-shadow:0 3px 0 rgba(12,12,12,0.03);-webkit-box-shadow:0 3px 0 rgba(12,12,12,0.03);box-shadow:0 3px 0 rgba(12,12,12,0.03);-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;padding:30px}.signinpanel form a{color:#666}.signuppanel{margin:5% auto 0 auto;width:780px}.signuppanel .row{margin-left:-5px;margin-right:-5px}.signuppanel .logopanel{float:none;width:auto;padding:0;background:none}.signuppanel .col-sm-6,.signuppanel .col-sm-5,.signuppanel .col-sm-3,.signuppanel .col-sm-4{padding-left:5px;padding-right:5px}.signuppanel .signup-info{padding-right:20px}.signuppanel form{background:rgba(255,255,255,0.2);border:1px solid #ccc;-moz-box-shadow:0 3px 0 rgba(12,12,12,0.03);-webkit-box-shadow:0 3px 0 rgba(12,12,12,0.03);box-shadow:0 3px 0 rgba(12,12,12,0.03);-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;padding:30px}.feat-list{margin-top:20px}.feat-list .fa{font-size:20px;border:2px solid #636e7b;padding:4px 5px;-moz-border-radius:100px;-webkit-border-radius:100px;border-radius:100px;float:left}.feat-list h4{margin-left:45px;padding-top:3px}.feat-list p{margin-left:45px}.signup-footer{border-top:1px solid #ddd;margin-top:30px;padding-top:10px;font-size:12px}.leftpanel-collapsed .logopanel{display:none}.leftpanel-collapsed .headerbar{margin-left:-50px}.leftpanel-collapsed .leftpanel{width:50px;top:50px}.leftpanel-collapsed .leftpanelinner{padding:0}.leftpanel-collapsed .leftpanelinner .sidebartitle{display:none}.leftpanel-collapsed .nav-bracket{margin:5px}.leftpanel-collapsed .nav-bracket li a{text-align:center;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;padding:10px;position:relative}.leftpanel-collapsed .nav-bracket>li>a:hover{border-radius:2px 0 0 2px}.leftpanel-collapsed .nav-bracket>li.nav-parent>a{background-image:none}.leftpanel-collapsed .nav-bracket>li>a>span:last-child{position:absolute;background:#fff;padding:10px 10px 10px 5px;left:40px;top:0;min-width:209px;text-align:left;z-index:100;display:none;-moz-box-shadow:0 3px 0 rgba(12,12,12,0.03);-webkit-box-shadow:0 3px 0 rgba(12,12,12,0.03);box-shadow:0 3px 0 rgba(12,12,12,0.03);-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.leftpanel-collapsed .nav-bracket>li>a .badge{display:none}.leftpanel-collapsed .nav-bracket>li.active>a>span:last-child{-moz-border-radius:0 2px 0 0;-webkit-border-radius:0 2px 0 0;border-radius:0 2px 0 0}.leftpanel-collapsed .nav-bracket ul{display:none}.leftpanel-collapsed .nav-bracket>li.nav-hover>a{background:#fff;color:#1d2939}.leftpanel-collapsed .nav-bracket>li.nav-hover.active>a{background:#1CAF9A;color:#fff}.leftpanel-collapsed .nav-bracket>li.nav-hover>a>span:last-child{display:block}.leftpanel-collapsed .nav-bracket>li.nav-hover.active>a>span:last-child{background:#1CAF9A;color:#fff}.leftpanel-collapsed .nav-bracket li.nav-hover ul{display:block;position:absolute;top:41px;left:45px;margin:0;min-width:204px;background:#1d2939;z-index:100;-moz-border-radius:0 0 2px 0;-webkit-border-radius:0 0 2px 0;border-radius:0 0 2px 0}.leftpanel-collapsed .nav-bracket ul a{text-align:left;padding:6px 10px;padding-left:0}.leftpanel-collapsed .nav-bracket ul a:hover{background:none}.leftpanel-collapsed .nav-bracket li a i{margin-right:0}.leftpanel-collapsed .mainpanel{margin-left:50px}.leftpanel-collapsed .infosummary{display:none}.leftpanel-collapsed .sticky-leftpanel{overflow-y:visible}.leftpanel-collapsed .nav-bracket .children{display:none}.chat-view{margin-right:240px}.rightpanel{width:240px;height:100%;position:fixed;overflow-y:auto;overflow-x:hidden;top:0;right:-240px;display:none}.chat-view .rightpanel{display:block;right:0}.chat-relative-view{right:240px}.chat-relative-view .rightpanel{display:block;right:0}.rightpanel,.rightpanel label{color:#999}.rightpanel .nav-tabs{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;background:#131d29;position:fixed;width:240px}.rightpanel .nav-tabs>li{display:table-cell;width:1%}.rightpanel .nav-tabs>li>a{padding:15px 20px 16px 20px;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;color:rgba(255,255,255,0.5)}.rightpanel .nav-tabs>.active>a,.rightpanel .nav-tabs>.active>a:hover,.rightpanel .nav-tabs>.active>a:focus{background:#1D2939;color:#fff}.rightpanel .tab-content{background:none;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;margin-top:45px}.chatuserlist{list-style:none;padding:0;border-bottom:1px dotted rgba(255,255,255,0.05)}.chatuserlist li{border-top:1px dotted rgba(255,255,255,0.05)}.chatuserlist .media-thumb{-moz-border-radius:50px;-webkit-border-radius:50px;border-radius:50px;border:2px solid #999;padding:3px;display:block}.chatuserlist .media{margin:10px 0;padding:0}.chatuserlist .online .media-thumb{border-color:#1CAF9A}.chatuserlist .media-object{width:30px;-moz-border-radius:50px;-webkit-border-radius:50px;border-radius:50px}.chatuserlist .media-body{line-height:normal;padding-top:7px}.chatuserlist .media-body small{color:#666;display:block}.chatuserlist .media-body strong{color:#bbb;font-size:13px;margin-bottom:4px;display:block}.chatuserlist .badge{margin-top:5px}.rightpanel .pane-settings{font-size:13px}.horizontal-menu{margin:0}.horizontal-menu .menutoggle{display:none}.horizontal-menu .leftpanel{display:none}.horizontal-menu .mainpanel{margin:0;width:100%;overflow:hidden}.horizontal-menu.chat-view .mainpanel{margin-left:-240px}.headerbar .logopanel{float:left;width:240px;border-right:1px solid #eee}.horizontal-menu.chat-view .navhor-bracket{padding:0}.headerbar .topnav{float:left;margin:0}.headerbar .topnav>ul{padding:0;margin:0;float:left}.headerbar .topnav>ul>li{margin:0;float:left}.headerbar .topnav>ul>li>a{padding:15px 15px 12px 15px;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;text-transform:uppercase;font-size:12px;color:#666;font-family:'LatoBold', sans-serif}.headerbar .topnav>ul>li>a:hover,.headerbar .topnav>ul>li>a:focus,.headerbar .topnav>ul>li.open>a,.headerbar .topnav>ul>li.active>a{box-shadow:0 3px 0 #1CAF9A;color:#1CAF9A;background:none}.headerbar .topnav>ul>li>a i{margin-right:5px}.headerbar .topnav>ul>li>a .badge{margin-left:10px}.headerbar .topnav>ul>li .dropdown-menu{margin-top:2px;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.headerbar .topnav>ul>li .dropdown-menu>li>a{padding:6px 10px;font-size:13px}.headerbar .topnav>ul>li .dropdown-menu>li>a:hover{background:#1CAF9A;color:#fff}.headerbar .topnav>ul>li .dropdown-menu i{display:none}.fixed{background:#c9cccf}.fixed section{margin:auto;max-width:1050px;position:relative;background:#1D2939}.fixed .rightpanel{background:#1D2939}.fixed-noleft .leftpanel{display:none}.fixed-noleft .mainpanel{margin-left:0}.fixed-noleft.chat-view .headerbar{margin-left:0}.fixed-noleft.chat-view .logopanel{display:block}.fixed-noleft .menutoggle{display:none}.bs-example-modal-panel .modal-content{background:none}.modal-photo-viewer{margin-top:0;margin-bottom:0;top:50%;left:50%;width:auto;position:absolute}.modal-photo-viewer .modal-content{position:relative;width:900px;height:600px;margin-left:-50%;margin-top:-300px}.modal-photo-viewer .modal-photo-left,.modal-photo-viewer .modal-photo-right{padding:0}.modal-photo-viewer .modal-photo-left{background:#000}.modal-photo-viewer .modal-photo{top:50%;position:relative}.modal-photo-viewer .row{margin-left:0;margin-right:0}.modal-photo-viewer .img-responsive{max-height:600px;margin:auto}.media-details{padding:20px}.media-details .categ{font-size:11px}.media-details .media-title{margin:0;margin-bottom:10px;color:#333;font-size:20px}.media-details p{font-size:13px}.media-details .details{margin-top:20px}.media-details .details h4{font-size:12px;color:#333;text-transform:uppercase;font-family:'LatoBold'}.media-details .table{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.media-details .table tr td{padding:3px 0;font-size:13px;background:none}.table-primary thead tr th{background:#428BCA}.table-success thead tr th{background:#1CAF9A}.table-warning thead tr th{background:#F0AD4E}.table-danger thead tr th{background:#D9534F}.table-info thead tr th{background:#5BC0DE}.table-dark thead tr th{background:#1D2939}.table.table-primary thead tr th,.table.table-success thead tr th,.table.table-danger thead tr th,.table.table-warning thead tr th,.table.table-info thead tr th,.table.table-dark thead tr th{color:#fff;border-bottom:0}.table-bordered.table-primary thead tr th,.table-bordered.table-success thead tr th,.table-bordered.table-warning thead tr th,.table-bordered.table-danger thead tr th,.table-bordered.table-info thead tr th,.table-bordered.table-dark thead tr th{border-color:rgba(255,255,255,0.2)}.panel .panel-table{padding:0}.panel-table .table{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;margin:0}.table-buglist thead tr th:first-child,.table-buglist tbody tr td:first-child{text-align:center;width:30px}.table-buglist .fa{cursor:pointer}.table-buglist .fa-bug{color:#D9534F}.table-buglist .fa-magic{color:#1CAF9A}.table-buglist .btn-group{margin:0}.table-buglist .btn-group .dropdown-toggle{color:#999;cursor:pointer}.table-buglist .btn-group .dropdown-toggle:hover{color:#666}.bug-key-title{margin:0;margin-bottom:5px}.dropdown-menu-head{background:#fff}.dropdown-menu-head .title{background:#1d2939;color:#94989d;padding:15px;text-transform:uppercase;font-size:11px;margin:0}.tp-icon{padding:10px 20px;line-height:20px;border-color:#ddd;position:relative}.tp-icon .badge{position:absolute;font-size:10px;font-weight:normal;right:4px;top:10px;line-height:13px;background-color:#D9534F;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;padding:2px 5px}.chosen-container-single .chosen-single div{width:30px;border-left:1px solid #ccc;background:#e4e7ea}.chosen-container-single .chosen-single div b{background:url(/images/dropdown-arrow.png) no-repeat 8px 15px}.chosen-container-active.chosen-with-drop .chosen-single div{width:30px;border-left:0;background:#fff}.chosen-container-active.chosen-with-drop .chosen-single div b{background-position:8px -33px}.bootstrap-timepicker-widget.dropdown-menu{width:230px}.colorpicker-input{width:200px;float:left}.colorselector{margin-top:4px}.stickyheader .logopanel{position:fixed;top:0;left:0;width:240px;z-index:100}.stickyheader .leftpanel{top:50px}.stickyheader .sticky-leftpanel{top:0}.stickyheader .sticky-leftpanel .leftpanelinner{margin-top:55px}.stickyheader .headerbar{position:fixed;top:0;left:240px;width:100%;z-index:100;box-shadow:0 1px rgba(0,0,0,0.05)}.stickyheader .mainpanel{padding-top:50px}.stickyheader .header-right{margin-right:240px}.stickyheader.leftpanel-collapsed .headerbar{left:50px}.stickyheader.leftpanel-collapsed .header-right{margin-right:0}.stickyheader.chat-view .headerbar{right:240px;width:auto}.mb5{margin-bottom:5px}.mb10{margin-bottom:10px}.mb15{margin-bottom:15px}.mb20{margin-bottom:20px}.mb30{margin-bottom:30px}.mb40{margin-bottom:40px}.mr5{margin-right:5px}.mr10{margin-right:10px}.mr20{margin-right:20px}.mr30{margin-right:30px}.mt5{margin-top:5px}.mt10{margin-top:10px}.nomargin{margin:0}.noshadow{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.border-right-0{border-right:0}.border-left-0{border-left:0}.nopadding{padding:0 !important}.padding-top-0{padding-top:0}.padding5{padding:5px}.padding10{padding:10px}.serif{font-family:'Georgia, serif'}.italic{font-style:italic}.dark{color:#333}.width100p{width:100%}.width20{width:20px}.width30{width:30px}.inblock{display:inline-block}@media screen and (max-width: 1024px){body{position:relative}.leftpanel{display:none}.mainpanel{margin-left:0;width:100%}.leftpanel-collapsed .leftpanel{display:none}.leftpanel-collapsed .mainpanel{margin-left:0}.leftpanel-collapsed .headerbar{margin-left:0}.leftpanel-show section{overflow-x:hidden}.leftpanel-show .leftpanel{display:block}.leftpanel-show .mainpanel{margin-left:240px}.stickyheader .headerbar{left:0}.stickyheader.leftpanel-show .headerbar{left:240px}.stickyheader.chat-relative-view .headerbar{right:240px;left:auto}.stickyheader .header-right{margin-right:0}.btn-demo{margin-bottom:20px}.leftpanelinner{padding:5px 10px}.leftpanelinner .searchform input{background:#131b26;border:0}.nav-horizontal{position:relative}.horizontal-menu .menutoggle{display:block}.horizontal-menu .headerbar .logopanel{display:none}.nav-horizontal .caret{display:none}.horizontal-menu .header-left,.horizontal-menu .topnav{float:none}.horizontal-menu-sidebar .header-left,.horizontal-menu-sidebar .topnav{float:none}.fixed-noleft .menutoggle{display:block}.fixed-noleft .headerbar .logopanel{display:none}.fixed-noleft .header-left,.fixed-noleft .topnav{float:none}}@media screen and (max-width: 767px){.searchform{position:relative}.headermenu li:nth-child(4){display:none}.leftpanel .searchform,.leftpanel .userlogged{display:block}.breadcrumb-wrapper{display:none}.headermenu .dropdown-menu:after{display:none}.rightpanel .nav-tabs.nav-justified>li>a,.rightpanel .nav-justified>li>a{margin-bottom:0}.panel-email .col-sm-3{display:none}}@media screen and (max-width: 640px){.notfoundpanel{width:auto;padding:0 20px}.notfoundpanel h1{font-size:72px;line-height:72px}.notfoundpanel h3{font-size:14px;line-height:normal}.notfound h4{font-size:12px;line-height:18px}.notfoundpanel form{width:auto}.notfoundpanel .form-control{float:none;width:100%}.notfoundpanel .btn{margin-top:10px;width:100%}.signinpanel,.signuppanel{margin:0 auto;width:480px;padding:20px}.signinpanel form{margin-top:20px}.signup-footer{margin-bottom:10px}.signuppanel .form-control{margin-bottom:10px}.signup-footer .pull-left,.signup-footer .pull-right{float:none !important;text-align:center}.widget-quick-status-post .nav-tabs.nav-justified>li{display:table-cell;width:1%;margin-bottom:-5px}.widget-quick-status-post .nav-tabs.nav-justified>li a{margin:0}.nav-tabs.nav-justified.nav-profile>li{float:none;margin-bottom:0;display:table-cell;width:1%}.nav-tabs.nav-justified.nav-profile>li a{margin:0;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0}.dataTables_info{float:none !important;text-align:center;margin-bottom:10px}.dataTables_paginate{margin-bottom:10px;text-align:center !important;float:none !important}.paginate_disabled_previous,.paginate_enabled_previous,.paginate_disabled_next,.paginate_enabled_next{float:none !important}.dataTables_filter,.dataTables_length{float:none !important;padding:10px 0 0 10px;margin:auto !important;display:inline-block}.table.dataTable th,.table.dataTable td{font-size:13px;min-width:150px}.paging_full_numbers{min-width:500px;margin:0 0 10px 10px}.paging_full_numbers:after{clear:both;display:block;content:''}}@media screen and (max-width: 480px){.signinpanel,.signuppanel{width:360px}.panel-email .pull-right{float:none !important}.pageheader h2{font-size:18px}.pageheader .glyphicon,.pageheader .fa{font-size:18px}.pageheader h2 span{font-size:11px}.fc-header td{display:block !important;text-align:center;width:100%;border:1px solid #eee;padding:10px !important;margin-top:-1px}.fc-button{padding:2px 5px !important;margin:0 !important}.fc-header-title h2{margin:0 !important}.filemanager-options li{padding:5px 7px}.filemanager-options .filter-type{display:block;float:none;border-top:1px solid #eee}.comment-list .media-object{width:30px;padding:2px}.comment-list .media>.pull-left{margin:0}.comment-list h4{font-size:13px}.comment-list .reply{font-size:10px;padding:2px 5px}.comment-list .media-body{font-size:12px;line-height:18px}.blog-content form{margin-bottom:20px}.letter-list{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.letter-list::after{clear:both;display:block;content:''}.letter-list li{float:left;width:auto;display:inline-block}.letter-list li a{display:block;padding:2px 5px}.btn-invoice:before{display:block;content:'';clear:both}.btn-invoice .btn{display:block;width:100%;margin-top:10px}.nav-tabs.nav-justified.nav-profile>li a{font-size:13px;padding:14px 10px}#bloglist>div{padding:0;margin:0;float:none;width:auto}}@media screen and (max-width: 360px){.pageheader h2 span{display:none}.blog-title{font-size:14px;line-height:18px}.blog-summary{font-size:12px;line-height:18px}.blog-summary .btn{padding:2px 5px;display:block;width:100%}.headermenu li:first-child .dropdown-menu{margin-right:-130px}.headermenu li:nth-child(2) .dropdown-menu{margin-right:-85px}.headermenu li:nth-child(3) .dropdown-menu{margin-right:-37px}.nav-tabs.nav-justified.nav-profile>li{float:none;display:block;width:auto}.blog-media .media-body{overflow:visible}.follower-list .btn{display:block;margin:0 0 5px 0;width:100%}.filemanager-options li{display:block;border-top:1px solid #eee}.filemanager-options li:first-child{border-top:0}.authorpanel .media-object{width:80px;margin-right:10px}.people-item .media-object{width:80px !important;height:80px !important}.pagination{margin-bottom:20px}}@media screen and (max-width: 320px){.signinpanel,.signuppanel{width:310px}}.toggle-slide{overflow:hidden;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;direction:ltr}.toggle-slide .toggle-on,.toggle-slide .toggle-off,.toggle-slide .toggle-blob{float:left}.toggle-slide .toggle-blob{position:relative;z-index:99;cursor:hand;cursor:grab;cursor:-moz-grab;cursor:-webkit-grab}.toggle-slide{overflow:hidden;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;direction:ltr}.toggle-slide .toggle-on,.toggle-slide .toggle-off,.toggle-slide .toggle-blob{float:left}.toggle-slide .toggle-blob{position:relative;z-index:99;cursor:hand;cursor:grab;cursor:-moz-grab;cursor:-webkit-grab}.toggle-default .toggle-slide{border:1px solid #ccc}.toggle-default .toggle-slide.active{border-color:#999}.toggle-default .toggle-slide .toggle-on,.toggle-default .toggle-slide .toggle-off,.toggle-default .toggle-slide .toggle-blob{font-size:11px;font-weight:500}.toggle-default .toggle-slide .toggle-on,.toggle-default .toggle-select .toggle-inner .active{background:#999;color:#fff}.toggle-default .toggle-slide .toggle-off,.toggle-default .toggle-select .toggle-on{color:#666;background:#f7f7f7}.toggle-default .toggle-slide .toggle-blob{background:#fff;border-right:1px solid #ccc}.toggle-default .toggle-slide.active .toggle-blob{border-left:1px solid #999;border-right:0}.toggle-default .toggle-slide .toggle-blob:hover{background:#fcfcfc}.toggle-primary .toggle-slide{border:1px solid #999}.toggle-primary .toggle-slide.active{border-color:#357EBD}.toggle-primary .toggle-slide .toggle-on,.toggle-primary .toggle-slide .toggle-off,.toggle-primary .toggle-slide .toggle-blob{font-size:11px;font-weight:500}.toggle-primary .toggle-slide .toggle-on,.toggle-primary .toggle-select .toggle-inner .active{background:#428BCA;color:#fff}.toggle-primary .toggle-slide .toggle-off,.toggle-primary .toggle-select .toggle-on{color:#fff;background:#bbb}.toggle-primary .toggle-slide .toggle-blob{background:#fff;border-right:1px solid #999}.toggle-primary .toggle-slide.active .toggle-blob{border-left:1px solid #357EBD;border-right:0}.toggle-primary .toggle-slide .toggle-blob:hover{background:#fcfcfc}.toggle-success .toggle-slide{border:1px solid #999}.toggle-success .toggle-slide.active{border-color:#1CAF9A}.toggle-success .toggle-slide .toggle-on,.toggle-success .toggle-slide .toggle-off,.toggle-success .toggle-slide .toggle-blob{font-size:11px;font-weight:500}.toggle-success .toggle-slide .toggle-on,.toggle-success .toggle-select .toggle-inner .active{background:#1CAF9A;color:#fff}.toggle-success .toggle-slide .toggle-off,.toggle-success .toggle-select .toggle-on{color:#fff;background:#bbb}.toggle-success .toggle-slide .toggle-blob{background:#fff;border-right:1px solid #999}.toggle-success .toggle-slide.active .toggle-blob{border-left:1px solid #4CAE4C;border-right:0}.toggle-success .toggle-slide .toggle-blob:hover{background:#fcfcfc}.toggle-warning .toggle-slide{border:1px solid #999}.toggle-warning .toggle-slide.active{border-color:#EEA236}.toggle-warning .toggle-slide .toggle-on,.toggle-warning .toggle-slide .toggle-off,.toggle-warning .toggle-slide .toggle-blob{font-size:11px;font-weight:500}.toggle-warning .toggle-slide .toggle-on,.toggle-warning .toggle-select .toggle-inner .active{background:#F0AD4E;color:#fff}.toggle-warning .toggle-slide .toggle-off,.toggle-warning .toggle-select .toggle-on{color:#fff;background:#bbb}.toggle-warning .toggle-slide .toggle-blob{background:#fff;border-right:1px solid #999}.toggle-warning .toggle-slide.active .toggle-blob{border-left:1px solid #EEA236;border-right:0}.toggle-warning .toggle-slide .toggle-blob:hover{background:#fcfcfc}.toggle-danger .toggle-slide{border:1px solid #999}.toggle-danger .toggle-slide.active{border-color:#D43F3A}.toggle-danger .toggle-slide .toggle-on,.toggle-danger .toggle-slide .toggle-off,.toggle-danger .toggle-slide .toggle-blob{font-size:11px;font-weight:500}.toggle-danger .toggle-slide .toggle-on,.toggle-danger .toggle-select .toggle-inner .active{background:#D9534F;color:#fff}.toggle-danger .toggle-slide .toggle-off,.toggle-danger .toggle-select .toggle-on{color:#fff;background:#bbb}.toggle-danger .toggle-slide .toggle-blob{background:#fff;border-right:1px solid #999}.toggle-danger .toggle-slide.active .toggle-blob{border-left:1px solid #D43F3A;border-right:0}.toggle-danger .toggle-slide .toggle-blob:hover{background:#fcfcfc}.input-group.exclusion{margin-top:4px}.input-group-btn.add-exclusion a:last-child{margin-top:4px}.ipset-contents-editor{min-height:300px}.ui-menu .ui-menu-item a,.ui-menu .ui-menu-item a:active,.ui-menu .ui-menu-item a:focus,.ui-menu .ui-menu-item a:hover{color:#2f4f4f}.ui-autocomplete{max-height:181px;border:1px solid #ccc;overflow-y:auto;overflow-x:hidden;background-color:#fff}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{margin:0px;background:url("/images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x;color:#2f4f4f}html{position:absolute;width:100%;height:100%;margin:0;padding:0}body{overflow-y:scroll;width:100%;height:100%;margin:0;padding:0}.start-editing:hover,.stop-editing:hover,.add-object:hover{cursor:pointer;text-decoration:underline}.control-icons .fa{cursor:pointer}.object.is-edited>.form-area{margin-left:-15px;margin-right:-15px;background-color:#f5f5f5;-webkit-border-radius:5px;border-radius:5px}.object.is-edited>.form-area>.row{margin-left:0;margin-right:0}.object.is-edited>.form-area form{margin:15px 0}.object.is-edited>.form-area .control-label{text-align:left}.object.is-edited>.form-area .form-control{font-size:18px}.user .avatar{display:inline-block;vertical-align:middle;width:30px;height:30px;overflow:hidden;-webkit-border-radius:5px;border-radius:5px;margin-right:4px}.user .avatar img{max-width:30px}.user .name{vertical-align:middle}.user .party{vertical-align:middle}.align-middle{vertical-align:middle}.add-objects-wrapper{margin:10px 0}.add-objects-wrapper .results{margin-bottom:15px}.add-objects-wrapper .results .user:hover{cursor:pointer}.add-objects-wrapper .results .user:hover .name{text-decoration:underline}.object.placeholder{background-color:#f0f0f0}.object-list ul li{padding:0}.object-list ul a{display:block;padding:15px 20px}.object-list ul a:hover{text-decoration:none}.object-list ul a:hover .sender{text-decoration:underline}.object-list ul a,.object-list ul a:link,.object-list ul a:visited,.object-list ul a:active{color:#636e7b}.splash-screen .row{margin-top:150px}.splash-screen .error-container{line-height:45px;font-size:16px;padding:0 15px}.equiwidth{min-width:110px}.fake-input-group .input-group-addon{border:1px solid #ccc;-webkit-border-radius:2px;border-radius:2px}.fake-input-group .fake-input{height:42px}.dashed{border-bottom:1px dashed #428bca;text-decoration:none}.dashed:hover{text-decoration:none;border-bottom:1px dashed #2a6496}html{height:auto}body{background-color:#e4e7ea}.navbar-main{background-color:#fff;border:0}.navbar-main .navbar-form{margin-top:7px;margin-bottom:6px}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{background-color:#e4e7ea}.input-group .btn{padding-top:9px;padding-bottom:9px}.input-group .btn-near-select{padding-top:7px;padding-bottom:7px}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span,.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:default}legend{padding-bottom:3px;margin-bottom:10px}.chosen-choices,.chosen-single{padding:4px !important}.chosen-single{padding-left:8px !important;padding-right:8px !important;line-height:32px !important}.chosen-container-single .chosen-single abbr{top:12px;right:34px}.chosen-disabled{opacity:1 !important}.chosen-disabled .chosen-choices{background-color:#eee}.chosen-disabled .chosen-choices li.search-choice{background-color:#dedede}.chosen-disabled .chosen-single{background-color:#eee}.chosen-disabled .chosen-single div{opacity:0.65}div.error{color:#a94442;margin-top:5px;margin-bottom:10px}.nav>li>a{font-family:'LatoBold'}select{-webkit-appearance:menulist-button}.panel-heading p{margin-top:5px}legend{font-size:17px}.signin,.signup{width:320px;padding:10px}.signin .sign-in-with-google,.signup .sign-in-with-google{width:100%}.signin p,.signup p{text-align:center;padding:0;margin:0 0 4px 0}.signin label.error,.signup label.error{color:#e24333 !important;padding:0 8px 4px}.navbar-brand{padding:5px}.not-found .pad{width:400px;margin:100px auto}.results>thead>tr>th:first-child,.results>tbody>tr>th:first-child,.results>tfoot>tr>th:first-child,.results>thead>tr>td:first-child,.results>tbody>tr>td:first-child,.results>tfoot>tr>td:first-child{padding-left:15px}.results>thead>tr>th:last-child,.results>tbody>tr>th:last-child,.results>tfoot>tr>th:last-child,.results>thead>tr>td:last-child,.results>tbody>tr>td:last-child,.results>tfoot>tr>td:last-child{padding-right:15px}.results form .form-group:last-child{margin-bottom:15px}.results form .form-group:last-child .btn-group{margin-bottom:0}.results .options-form>*{margin-top:7px;margin-bottom:7px}.results .options-form .controlsForTheHeartOfTheSun+fieldset{margin-top:10px}.results .options-form fieldset+.controlsForTheHeartOfTheSun{margin-top:10px}.results .pager{margin-top:0}.results .dropdown-toggle{cursor:pointer}.results .results-buttons{margin-top:10px;margin-bottom:10px}.results .results-buttons .btn-group{margin:0}.results .fieldset-toggle{cursor:pointer}.results .secondary-controls .interface-toggle-btn-group{display:none}.results *[data-toggle='popover']{margin-left:5px}.query-display{display:block;margin:10px 0;white-space:pre-line}.results-scroller{overflow:visible}.results-table{white-space:nowrap}.results-table>tbody>tr.highlighted>td,.results-table>tbody>tr.highlighted>th{background-color:#f5f5f5}.results-table thead th{cursor:pointer}.display-fields-block .checkbox{width:150px;height:25px;float:left;margin-top:0 !important}.num-recs{width:auto;display:inline;padding:8px;border:1px solid #ddd;color:#636e7b}.extras{margin-bottom:10px;text-align:center}.extras a{margin:0 5px}input-group.bin-time{margin-top:10px}input.stats-radio-input{width:60px}.bin-time{border-left:2px solid #563d7c}.rwstats-parameters .direction-input-group .btn-group{width:100%}.rwstats-parameters .direction-input-group .btn-group .btn{width:50%}.rwstats-parameters .input-group-addon label{vertical-align:top;margin:0 !important}.rwstats-parameters .input-group-addon.equisize-input-group-addon label{min-width:80px;text-align:left}.tuple-contents-editor{min-height:300px}.container-xs-height{display:table;padding-left:0px;padding-right:0px}.row-xs-height{display:table-row}.col-xs-height{display:table-cell;float:none}@media (min-width: 768px){.container-sm-height{display:table;padding-left:0px;padding-right:0px}.row-sm-height{display:table-row}.col-sm-height{display:table-cell;float:none}}@media (min-width: 992px){.container-md-height{display:table;padding-left:0px;padding-right:0px}.row-md-height{display:table-row}.col-md-height{display:table-cell;float:none}}@media (min-width: 1200px){.container-lg-height{display:table;padding-left:0px;padding-right:0px}.row-lg-height{display:table-row}.col-lg-height{display:table-cell;float:none}}.col-top{vertical-align:top}.col-middle{vertical-align:middle}.col-bottom{vertical-align:bottom}.dragtable-drag-handle{cursor:move}.dragtable-drag-wrapper{position:absolute;z-index:1000}.dragtable-drag-wrapper .dragtable-drag-col{opacity:0.7;filter:alpha(opacity=70);cursor:move}.dragtable-col-placeholder{border-left:1px dotted black;border-right:1px dotted black;color:#EFEFEF;background:#EFEFEF !important;visibility:visible !important}table .dragtable-col-placeholder:first{border-top:1px dotted black}.dragtable-col-placeholder *{opacity:0.0;visibility:hidden}.dragtable-col-placeholder{color:transparent !important}html{position:relative;min-height:100%}body{margin-bottom:60px}.footer{position:absolute;bottom:0;width:100%;height:45px} \ No newline at end of file + url('/fonts/roboto/Roboto-BlackItalic-webfont.svg#RobotoBlackItalic') format('svg');font-weight:normal;font-style:normal}body{background:#1d2939;font-family:'LatoRegular', 'Lucida Grande', 'Lucida Sans Unicode', Helvetica, sans-serif !important;line-height:21px;color:#636e7b;overflow:hidden}body.notfound,body.signin{background:#e4e7ea}input,select,textarea{font-family:'LatoRegular', 'Lucida Grande', 'Lucida Sans Unicode', Helvetica, sans-serif !important;color:#636e7b}a:focus,a:active{outline:none}h1,h2,h3,h4,h5{font-family:'LatoRegular', 'Lucida Grande', 'Lucida Sans Unicode', Helvetica, sans-serif}strong{font-family:'LatoBold';font-weight:normal}#preloader{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#e4e7ea;z-index:10000}#status{width:30px;height:30px;position:absolute;left:50%;top:50%;margin:-15px 0 0 -15px;font-size:32px}.headerbar{border-left:1px solid #eee;background:#fff}.headerbar::after{clear:both;display:block;content:''}.menutoggle{float:left;width:50px;height:50px;font-size:22px;cursor:pointer;float:left;color:#1d2939;border-right:1px solid #eee;-moz-transition:all 0.2s ease-out 0s;-webkit-transition:all 0.2s ease-out 0s;transition:all 0.2s ease-out 0s}.menutoggle:hover{color:#1d2939;background-color:#f7f7f7}.menutoggle .fa,.menutoggle .glyphicon{margin:14px 0 0 15px}.searchform input{width:250px;background:#fff url(/images/icon-search.png) no-repeat 95% center;float:left;padding:18px 20px;border:0;border-right:1px solid #eee;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;height:50px;font-size:14px}.searchform input:focus{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;border-color:#ddd}.searchform-left{margin-top:10px;margin-bottom:20px}.searchform-left .form-control{border:0;background:#131b26}.header-left{float:left}.header-right{float:right}.headermenu{list-style:none;margin:0;padding:0}.headermenu:after{clear:both;display:block;content:''}.headermenu>li{display:inline-block;float:left;border-left:1px solid #eee;position:relative}.headermenu .dropdown-toggle{padding:12px 10px;border-color:#fff;background:#fff;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border:0}.headermenu .dropdown-toggle:hover,.headermenu .dropdown-toggle:focus,.headermenu .dropdown-toggle:active,.headermenu .dropdown-toggle.active,.headermenu .open .dropdown-toggle.dropdown-toggle{background:#f9f9f9;color:#333;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.headermenu .dropdown-toggle img{vertical-align:middle;margin-right:5px;width:26px;-moz-border-radius:50px;-webkit-border-radius:50px;border-radius:50px}.headermenu .dropdown-toggle .caret{margin-left:5px}.headermenu .dropdown-menu{border:0;margin-top:0px;margin-right:-1px;-moz-border-radius:2px 0 2px 2px;-webkit-border-radius:2px 0 2px 2px;border-radius:2px 0 2px 2px;-moz-box-shadow:3px 3px 0 rgba(12,12,12,0.05);-webkit-box-shadow:3px 3px 0 rgba(12,12,12,0.05);box-shadow:3px 3px 0 rgba(12,12,12,0.05);padding:5px}.headermenu .dropdown-menu:after{border-bottom:6px solid #1d2939;border-left:6px solid transparent;border-right:6px solid transparent;content:"";display:inline-block;right:17px;position:absolute;top:-6px}.headermenu .dropdown-grid .grid-list{padding:20px}.headermenu .dropdown-menu li{display:block;margin:0;float:none;background:none;padding:15px 5px}.headermenu .dropdown-menu-usermenu li{padding:0}.headermenu .dropdown-menu-usermenu:after{right:95px}.headermenu .dropdown-menu li a{color:#94989d;font-size:13px;padding:7px 10px;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-transition:all 0.2s ease-out 0s;-webkit-transition:all 0.2s ease-out 0s;transition:all 0.2s ease-out 0s}.headermenu .dropdown-menu li a:hover{background:#1caf9a;color:#fff}.headermenu .dropdown-menu li i{font-size:11px;margin-right:5px}.headermenu .dropdown-menu-head{padding:0;min-width:300px}.headermenu .tp-icon{padding:12px 15px;height:50px;font-size:16px;background:#fff;color:#333;border-color:#fff;-moz-transition:all 0.2s ease-out 0s;-webkit-transition:all 0.2s ease-out 0s;transition:all 0.2s ease-out 0s}.headermenu .tp-icon+.dropdown-menu:after{right:17px}.headermenu .chat-icon{border-right:0}.headermenu .dropdown-menu-usermenu{background:#1d2939;min-width:200px}.headermenu .dropdown-menu-head ul{border:1px solid #ddd;border-top:0;padding:0 10px}.headermenu .dropdown-menu-head li a{color:#333;padding:0;opacity:1}.headermenu .dropdown-menu-head li a:hover{background:none;color:#428BCA;text-decoration:none}.headermenu .btn-group{margin-bottom:0}.dropdown-list li{padding:15px;overflow:hidden;border-bottom:1px solid #eee}.dropdown-list li:last-child{border-bottom:0}.dropdown-list .thumb{width:36px;float:left}.dropdown-list .thumb img{width:100%;display:block;vertical-align:middle}.dropdown-list .desc{margin-left:45px;display:block}.dropdown-list .desc h5{font-size:13px;margin-top:7px}.dropdown-list li:last-child{padding:7px 5px}.dropdown-list li .badge{float:right}.user-list{width:300px}.gen-list li a{display:block}.gen-list li a:hover{color:#333 !important;text-decoration:none}.gen-list li .name{font-size:13px;font-family:'LatoBold','Lucida Grande', 'Lucida Sans Unicode', Helvetica, sans-serif;line-height:21px;display:block}.gen-list li .msg{font-size:11px;line-height:normal;color:#999;display:block}.leftpanel{width:240px;position:absolute;top:0;left:0;z-index:100}.sticky-leftpanel{position:fixed;height:100%;overflow-y:auto}.logopanel{padding:10px;background:#fff}.logopanel h1{font-size:30px;font-family:'LatoBold', 'Lucida Grande', 'Lucida Sans Unicode', Helvetica, sans-serif;letter-spacing:-1.5px;color:#1d2939;line-height:30px;margin:0}.logopanel h1 span{color:#1caf9a}.leftpanelinner{padding:5px 15px}.leftpanel .searchform{display:none}.leftpanel .searchform::after{content:'';display:block;clear:both}.leftpanel .searchform input{padding:10px;height:auto;width:100%;margin:5px 0 20px 0;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}.leftpanel .userlogged{margin:0;padding:0;padding-bottom:15px;margin-bottom:15px;border-bottom:1px solid rgba(255,255,255,0.1);display:none}.leftpanel .userlogged .media-object{width:40px;-moz-border-radius:100px;-webkit-border-radius:100px;border-radius:100px;float:left;border:2px solid #1CAF9A;padding:2px;margin-left:2px}.leftpanel .userlogged .media-body{margin-left:50px;color:#ccc}.leftpanel .userlogged .media-body h4{font-size:15px;margin:0}.leftpanel .userlogged .media-body span{font-style:italic;font-size:11px;opacity:0.5}.sidebartitle{font-size:11px;text-transform:uppercase;color:#999;margin-bottom:10px}.nav-bracket{margin-bottom:30px}.nav-bracket>li>a{color:#8f939e;padding:7px 10px}.nav-bracket>li>a:hover,.nav-bracket>li>a:active,.nav-bracket>li>a:focus{background-color:#fff;color:#1d2939;-moz-box-shadow:0 3px 0 rgba(0,0,0,0.2);-webkit-box-shadow:0 3px 0 rgba(0,0,0,0.2);box-shadow:0 3px 0 rgba(0,0,0,0.2)}.nav-bracket>li.nav-parent>a{background:transparent url(/images/plus-white.png) no-repeat 96% center}.nav-bracket>li.nav-parent>a:focus{background-color:none;color:#8F939E;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.nav-bracket>li.nav-parent>a:hover,.nav-bracket>li.nav-parent>a:active{color:#1d2939;background-color:#fff;background-image:url(/images/plus.png)}.nav-bracket>li.nav-active>a{background-color:#fff;background-image:url(/images/minus.png);color:#1d2939;-moz-box-shadow:0 3px 0 rgba(0,0,0,0.2);-webkit-box-shadow:0 3px 0 rgba(0,0,0,0.2);box-shadow:0 3px 0 rgba(0,0,0,0.2)}.nav-bracket>li.nav-active>a:hover{background-image:url(/images/minus.png);background-repeat:no-repeat}.nav-bracket>li.nav-active>a:focus{color:#1d2939}.nav-bracket>li.active>a,.nav-bracket>li.active>a:hover,.nav-bracket>li.active>a:focus{background-color:#1caf9a;color:#fff}.nav-bracket>li.active>a{-moz-box-shadow:0 3px 0 rgba(0,0,0,0.2);-webkit-box-shadow:0 3px 0 rgba(0,0,0,0.2);box-shadow:0 3px 0 rgba(0,0,0,0.2)}.nav-bracket>li.nav-parent.active>a{background-image:url(/images/plus.png)}.nav-bracket>li.nav-active.active>a{background-image:url(/images/minus.png)}.nav-bracket>li.nav-active.active>a:hover{background-image:url(/images/minus.png)}.nav-bracket li .fa,.nav-bracket li .glyphicon{font-size:16px;vertical-align:middle;margin-right:10px;width:16px;text-align:center}.nav-bracket>li>a>.badge{margin-top:2px}.nav-bracket .children{list-style:none;display:none;margin:5px 0;padding:0}.nav-bracket .children>li>a{color:#94989d;font-size:13px;display:block;padding:5px 0 5px 27px;-moz-transition:all 0.2s ease-out 0s;-webkit-transition:all 0.2s ease-out 0s;transition:all 0.2s ease-out 0s}.nav-bracket .children>li>a>span{margin-top:2px}.nav-bracket .children>li>a:hover,.nav-bracket .children>li>a:active,.nav-bracket .children>li>a:focus{text-decoration:none;color:#1caf9a}.nav-bracket .children>li .fa{font-size:12px;opacity:0.5;margin-right:5px;text-align:left;width:auto;vertical-align:baseline}.nav-bracket .children>li.active>a{color:#1caf9a}.nav-bracket .children ul{margin-left:12px;border:0}.infosummary{margin:30px 0}.infosummary ul{padding:0;margin:20px 0 0;list-style:none;border-top:1px solid rgba(255,255,255,0.05)}.infosummary li{padding:10px 0;border-bottom:1px solid rgba(255,255,255,0.05)}.infosummary li:after{clear:both;display:block;content:''}.infosummary .datainfo{float:left;line-height:normal}.infosummary .datainfo h4{margin:0;font-size:16px;color:#fff;opacity:0.7}.infosummary span{font-size:11px;line-height:normal;text-transform:uppercase;font-size:10px;opacity:0.4}.infosummary .chart{float:right;margin-top:5px;opacity:0.6}.mainpanel{margin-left:240px;background:#e4e7ea;min-height:1000px}.pageheader{padding:15px;border-bottom:1px solid #d3d7db;border-top:1px solid #eee;background:#f7f7f7;position:relative}.pageheader h2{font-size:28px;color:#1D2939;letter-spacing:-0.5px;margin:0}.pageheader .glyphicon,.pageheader .fa{font-size:24px;margin-right:5px;padding:6px 7px;border:2px solid #1D2939;-moz-border-radius:50px;-webkit-border-radius:50px;border-radius:50px}.pageheader .fa.fa-pencil{padding:6px 9px}.pageheader .fa.fa-hand-o-up{padding:6px 9px 6px 7px}.pageheader .fa-file-o{padding:6px 10px}.pageheader .fa-user{padding:6px 10px}.pageheader .fa-file-text{padding:6px 10px}.pageheader .fa-map-marker{padding:6px 12px}.pageheader .fa-dollar{padding:6px 12px}.pageheader .fa-clock-o{padding:6px 8px}.pageheader h2 span{font-size:13px;text-transform:none;color:#999;font-style:italic;vertical-align:middle;letter-spacing:0}.pageheader h2 span::before{content:'/';margin:0 10px 0 5px;color:#ccc}.pageheader .breadcrumb-wrapper{position:absolute;top:23px;right:25px}.pageheader .breadcrumb-wrapper .label{color:#999;text-transform:uppercase;font-size:11px;font-weight:normal;display:inline-block}.pageheader .breadcrumb{background:none;display:inline-block;padding:0}.pageheader .breadcrumb li{font-size:12px}.pageheader .breadcrumb li.active{color:#333}.contentpanel{padding:20px;position:relative}.contentpanel::after{clear:both;display:block;content:''}form .form-group:last-child{margin-bottom:0}.row-pad-5{margin-left:-5px;margin-right:-5px}.row-pad-5 [class*="col-lg"],.row-pad-5 [class*="col-md"],.row-pad-5 [class*="col-sm"]{padding-left:5px;padding-right:5px;margin-bottom:10px}.subtitle{font-size:13px;text-transform:uppercase;color:#333;font-family:'LatoBold';margin-bottom:15px;margin-top:0}.subtitle-lined{border-bottom:1px dotted #ddd;padding-bottom:5px}p{margin-bottom:10px}.panel-stat{background:none}.panel-stat .panel-heading{padding:15px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.panel-stat .stat{color:#fff;max-width:250px}.panel-stat .stat img{text-align:center}.panel-stat i{font-size:30px;border:1px solid #fff;padding:15px;border-radius:50px;opacity:0.5}.panel-stat .stat-label{text-transform:uppercase;font-size:11px;opacity:0.75;display:block;line-height:normal;margin-bottom:2px}.panel-stat h1{margin:0;line-height:36px;font-family:'Helvetica Neue', sans-serif;font-size:38px}.panel-stat h4{margin:0;font-family:'Helvetica Neue', sans-serif}.sublabel{display:block;font-size:12px;margin-bottom:2px}.dashboard-datatable .dataTables_filter{float:left}.ckbox,.rdio{position:relative}.ckbox input[type="checkbox"],.rdio input[type="radio"]{opacity:0}.ckbox label,.rdio label{padding-left:10px;cursor:pointer;margin-bottom:7px !important}.ckbox label:before{width:18px;height:18px;position:absolute;top:1px;left:0;content:'';display:inline-block;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;border:1px solid #bbb;background:#fff}.ckbox input[type="checkbox"]:disabled+label{color:#999}.ckbox input[type="checkbox"]:disabled+label:before{background-color:#eee}.ckbox input[type="checkbox"]:checked+label::after{font-family:'FontAwesome';content:"\F00C";position:absolute;top:0;left:3.5px;display:inline-block;font-size:11px;width:16px;height:16px;color:#fff}.ckbox-default input[type="checkbox"]:checked+label:before{border-color:#999}.ckbox-default input[type="checkbox"]:checked+label::after{color:#333}.ckbox-primary input[type="checkbox"]:checked+label:before{border-color:#357EBD;background-color:#428BCA}.ckbox-warning input[type="checkbox"]:checked+label:before{border-color:#EEA236;background-color:#F0AD4E}.ckbox-success input[type="checkbox"]:checked+label:before{border-color:#1CAF9A;background-color:#1CAF9A}.ckbox-danger input[type="checkbox"]:checked+label:before{border-color:#D43F3A;background-color:#D9534F}.rdio label:before{width:18px;height:18px;position:absolute;top:1px;left:0;content:'';display:inline-block;-moz-border-radius:50px;-webkit-border-radius:50px;border-radius:50px;border:1px solid #bbb;background:#fff}.rdio input[type="radio"]:disabled+label{color:#999}.rdio input[type="radio"]:disabled+label:before{background-color:#eee}.rdio input[type="radio"]:checked+label::after{content:'';position:absolute;top:5px;left:4px;display:inline-block;font-size:11px;width:10px;height:10px;background-color:#444;-moz-border-radius:50px;-webkit-border-radius:50px;border-radius:50px}.rdio-default input[type="radio"]:checked+label:before{border-color:#999}.rdio-primary input[type="radio"]:checked+label:before{border-color:#428BCA}.rdio-primary input[type="radio"]:checked+label::after{background-color:#428BCA}.rdio-warning input[type="radio"]:checked+label:before{border-color:#F0AD4E}.rdio-warning input[type="radio"]:checked+label::after{background-color:#F0AD4E}.rdio-success input[type="radio"]:checked+label:before{border-color:#1CAF9A}.rdio-success input[type="radio"]:checked+label::after{background-color:#1CAF9A}.rdio-danger input[type="radio"]:checked+label:before{border-color:#D9534F}.rdio-danger input[type="radio"]:checked+label::after{background-color:#D9534F}pre{font-size:12px;color:#C7254E;border:1px solid #ddd;padding:8px;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;background:#fff}label.error{color:#B94A48;margin-top:2px}label.error:empty{display:none !important}.asterisk{color:#D9534F}div.error{margin-bottom:20px;display:none;position:relative}div.error label.error{display:block;padding-left:25px;position:relative}div.error label.error:before{font-family:'Glyphicons Halflings';content:'\e101';position:absolute;top:-2px;left:0;font-size:16px;color:#D9534F;display:inline-block}.bootstrap-timepicker .dropdown-menu{top:40px}.editable{padding:10px;border:1px solid #fcfcfc;margin-bottom:20px}.editable:hover{border:1px solid #ccc}.editable h4{color:#333}.basic-wizard .nav li a{background:#e4e7ea;border-bottom:1px solid #ccc;color:#4A535E;border-right:1px solid #ccc;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;opacity:0.75}.basic-wizard .nav li:last-child a{border-right:0}.basic-wizard .nav li a:hover{background-color:#f7f7f7;opacity:1}.basic-wizard .nav li.active a,.basic-wizard .nav li.active a:focus,.basic-wizard .nav li.active a:active{background:#fcfcfc;border-bottom-color:#fcfcfc;color:#333;opacity:1}.basic-wizard ul li a span{font-family:'LatoBold', sans-serif}.basic-wizard .pager{margin:0;border-top:1px solid #ddd;background:#f7f7f7;padding:10px}.basic-wizard .pager li a{-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;border-color:#357EBD;background-color:#428BCA;color:#fff}.basic-wizard .pager li a:hover{background-color:#3276B1;border-color:#285E8E}.basic-wizard .pager li.disabled a{background:#eee;color:#999;border-color:#ccc}.basic-wizard .progress{height:12px;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}.basic-wizard .nav-disabled-click li a:hover,.basic-wizard .nav-disabled-click li a:active,.basic-wizard .nav-disabled-click li a:focus{background-color:#E4E7EA;opacity:0.75;color:#4A535E;cursor:default}.basic-wizard .nav-disabled-click li.active a:hover,.basic-wizard .nav-disabled-click li.active a:active,.basic-wizard .nav-disabled-click li.active a:focus{background:#fcfcfc;color:#333;opacity:1}.basic-wizard .tab-content{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.tab-pane::after{clear:both;display:block;content:''}.btn-demo::after{clear:both;display:block;content:''}.btn-demo .btn{float:left;margin:0 10px 10px 0}.fonticon-list{list-style:none;margin:20px 0;padding:0}.fontawesome-list{list-style:none;padding:0}.fonticon-list li,.fontawesome-list li{display:block;margin-bottom:5px}.fonticon-list li span,.fontawesome-list li span{color:#333;vertical-align:middle;margin-right:8px;min-width:20px;display:inline-block;width:20px}.tooltip-example .btn,.popover-example .btn{margin:0 5px 5px 0}.tooltipflot{background-color:rgba(0,0,0,0.75);font-size:11px;color:#fff;padding:3px 10px;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}.jqstooltip{min-height:25px;border:0;min-width:30px;height:auto !important;width:auto !important}.tinystat{display:inline-block}.tinystat .chart,.tinystat .datainfo{display:inline-block;vertical-align:middle}.tinystat .chart{margin-right:5px}.tinystat .text-muted{text-transform:uppercase;font-size:10px}.tinystat h4{margin:0;color:#333;font-family:'LatoBold';line-height:normal;font-size:16px}.widget-quick-status-post .nav-tabs>li>a{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.widget-quick-status-post .panel-body{padding:0}.widget-messaging .panel-btns .panel-edit{padding:15px 17px;opacity:0.5;font-size:24px;margin-top:-18px;margin-right:-20px;position:relative}.widget-messaging .panel-btns .panel-edit:hover{opacity:1}.widget-messaging .panel-body{padding:0}.widget-messaging ul{list-style:none;padding:0;margin:0}.widget-messaging ul li{padding:15px;border-top:1px solid #eee;background-color:#fff}.widget-messaging ul li:hover{background-color:#fcfcfc}.widget-messaging ul li:first-child{border-top:0}.widget-messaging .sender{font-size:13px;color:#333;margin:0;font-family:'LatoBold';line-height:normal}.widget-messaging ul li small{line-height:normal}.widget-today .panel-heading,.widget-time .panel-heading{height:115px}.widget-today .glyphicon,.widget-today .fa{font-size:72px;color:#fff;opacity:1}.widget-time .glyphicon,.widget-time .fa{font-size:60px;color:#fff;opacity:1}.widget-today .today,.widget-time .today{line-height:normal;margin:0;color:#333;font-family:'LatoBold';font-size:20px}.widget-photoday .panel-body{padding:0}.widget-photoday .photoday img{width:100%;display:block;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0}.widget-photoday .photo-details{padding:15px}.widget-photoday .photo-title{color:#333;font-size:16px;margin:0;font-family:'LatoBold';line-height:normal}.widget-photoday .photo-details small{display:block}.widget-photoday .photo-meta{list-style:none;padding:0;margin:0;border-top:1px solid #e3e3e3;background-color:#f7f7f7}.widget-photoday .photo-meta li{display:table-cell;width:1%;text-align:center;border-left:1px solid #e3e3e3}.widget-photoday .photo-meta li:first-child{border-left:0}.widget-photoday .photo-meta li a,.widget-photoday .photo-meta li span{padding:15px 10px;display:block;color:#999;font-size:12px}.widget-photoday .photo-meta li a:hover{color:#666;text-decoration:none}.widget-bloglist .media{border-bottom:1px solid #eee;padding:0}.widget-bloglist .media .thumbnail{margin-bottom:15px}.widget-weather{overflow:hidden}.widget-weather .panel-body{padding:0;background-color:#1D2939}.widget-weather .row{margin:0}.widget-weather .temp,.widget-weather .weather{padding:0}.widget-weather .temp{background-color:#1CAF9A;color:#fff;padding:10px 0}.widget-weather .temp h1{font-size:60px;font-family:'LatoLight'}.widget-weather .temp h1 span{width:20px;height:20px;display:inline-block;margin-left:-10px}.widget-weather .temp h5{text-transform:uppercase}.widget-weather .weather-icon{color:#666;font-size:60px;background-color:#fff;display:block;padding:20px 0}.widget-weather .weather>div{width:50%;text-align:center;color:#fff;font-size:14px;padding-top:10px}.widget-profile .panel-heading{position:relative}.widget-profile .cover{position:absolute;top:0;left:0;height:105px;overflow:hidden;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0}.widget-profile .cover img{width:100%;display:block}.widget-profile .panel-body{position:relative;padding:0}.widget-profile-img{position:relative;margin-top:30px;margin-left:15px}.widget-profile-title{background:#428BCA;margin-top:-77px;padding:15px 0 15px 120px;color:#fff}.widget-profile-title h4{font-size:18px;margin:0;line-height:normal}.widget-profile-title small{line-height:normal}.widget-profile blockquote{font-size:18px;border-left:0;margin:0;color:#555;padding:15px}.widget-profile-title .fa{margin-right:7px}.widget-profile .row{margin:0}.widget-profile .row>div{padding:0}.widget-profile .row>div>span{display:block;border-right:1px solid rgba(255,255,255,0.15);font-size:14px;padding:15px 10px;text-transform:uppercase;background:#1D2939;color:#fff}.widget-profile .row>div:first-child span{-moz-border-radius:0 0 0 3px;-webkit-border-radius:0 0 0 3px;border-radius:0 0 0 3px}.widget-profile .row>div:last-child span{border-right:0;-moz-border-radius:0 0 3px 0;-webkit-border-radius:0 0 3px 0;border-radius:0 0 3px 0}.widget-todo .panel-btns i{font-size:12px}.widget-todo .todo-list{padding:0;margin:0;list-style:none}.widget-todo .panel-body{padding:0}.widget-todo .todo-list li{border-bottom:1px solid #eee;padding:15px 10px 8px 20px}.widget-todo .todo-list li input:checked+label{text-decoration:line-through}.widget-todo .todo-list .todo-form{padding-bottom:15px}.widget-todo .todo-list li .btn{margin:0;padding:6px 10px}.widget-slider .carousel-control.right,.widget-slider .carousel-control.left{background:none}.widget-slider .carousel-control{width:auto;text-shadow:none;color:#fff;bottom:auto;top:-55px;padding:0;line-height:normal}.widget-slider .carousel-control.left{left:auto;right:25px}.widget-slider .carousel-control span{line-height:normal;font-size:18px}.widget-slider .media{padding-bottom:0}.widget-slider .carousel-indicators{top:-53px;right:0;bottom:auto;left:auto;width:auto}.btn-compose-email{padding:10px 0;margin-bottom:20px}.nav-email>li>a>.badge{margin-top:2px}.nav-email>li>a{color:#444}.nav-email>li>a>i{width:16px;text-align:center;margin-right:10px}.nav-email>li>a:hover{background-color:#d8dcdf}.table-email{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;border-bottom:1px solid #eee;margin:0;background-color:#f7f7f7}.table-email tr.unread td{background-color:#fff}.table-email tbody>tr>td{vertical-align:middle}.table-email tr:hover{background-color:#eee;cursor:pointer}.table-email tr.selected td{background-color:#eee}.table-email .ckbox{width:18px;height:19px}.table-email .ckbox input[type="checkbox"]:checked+label:after{top:2px}.table-email .star{color:#ccc}.table-email .star-checked{color:#F0AD4E}.table-email td:first-child{width:30px}.table-email td:nth-child(2){width:30px}.table-email .media{margin:0;padding:0}.table-email .media-object{width:35px}.table-email .media h4{margin:0;font-size:14px;line-height:normal;font-family:'LatoBold', sans-serif}.table-email .media-meta{font-size:11px;color:#999}.table-email .email-summary{margin:2px 0 0 0}.table-email .email-summary strong{color:#333}.read-panel{margin-top:10px;border-top:1px solid #eee;padding-top:20px}.read-panel .media-object{width:35px}.read-panel .media h4{margin:2px 0 0 0;font-size:14px;line-height:normal}.read-panel .media-meta{font-size:12px}.email-subject{color:#333}.dataTables_length .chosen-container{min-width:75px}.dataTables_length .chosen-container-single .chosen-single{padding-right:0}.table-action{text-align:center}.table-action-hide a{opacity:0}.table-action a,.table-action-hide a{display:inline-block;margin-right:5px;color:#666}.table-action a:hover,.table-action-hide a:hover{color:#333}.table-action a:last-child,.table-action-hide a:last-child{margin-right:0}.external-event{background:#428BCA;margin-bottom:5px;padding:6px 10px;color:#fff;font-size:13px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.filemanager-options{list-style:none;margin:0;padding:0;margin-bottom:20px;background:#fcfcfc;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 3px 0 rgba(12,12,12,0.03);-webkit-box-shadow:0 3px 0 rgba(12,12,12,0.03);box-shadow:0 3px 0 rgba(12,12,12,0.03)}.filemanager-options li{display:inline-block;padding:12px 15px;border-right:1px solid #eee;font-size:12px;color:#666}.filemanager-options li a{color:#666}.filemanager-options li a.disabled{opacity:0.5;cursor:default}.filemanager-options li a.disabled:hover{text-decoration:none}.filemanager-options li i{font-size:14px;margin-right:5px;color:#444}.filemanager-options .ckbox label{margin:0 !important}.filemanager-options .filter-type{float:right;border-right:0;border-left:1px solid #eee}.filemanager-options .filter-type a{display:inline-block;margin-right:10px}.filemanager-options .filter-type a:last-child{margin-right:0}.filemanager-options .filter-type a:first-child{margin-left:10px}.filemanager-options .filter-type a.active{text-decoration:underline;color:#2A6496}.filemanager .thmb{border:1px solid #fcfcfc;background:#fcfcfc;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;padding:10px;margin-bottom:20px;position:relative;-moz-box-shadow:0 3px 0 rgba(12,12,12,0.03);-webkit-box-shadow:0 3px 0 rgba(12,12,12,0.03);box-shadow:0 3px 0 rgba(12,12,12,0.03)}.filemanager .thmb.checked{border-color:#ccc}.filemanager .thmb::after{clear:both;display:block;content:''}.filemanager .ckbox{position:absolute;top:15px;left:15px;display:none}.filemanager .fm-group{position:absolute;top:15px;right:15px;display:none}.filemanager .fm-toggle{padding:1px 4px;line-height:normal;background:#fff;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}.filemanager .fm-menu{min-width:120px}.filemanager .fm-menu a{font-size:12px;color:#333}.filemanager .fm-menu i{margin-right:7px;color:#999;width:16px;font-size:13px}.filemanager .thmb-prev{background:#eee;overflow:hidden}.filemanager .thmb-prev a{display:block}.filemanager .fm-title{margin-bottom:0;font-size:13px}.filemanager .fm-title a{overflow:hidden;text-overflow:ellipsis;display:block}.fm-sidebar{padding-left:10px}.fm-sidebar .subtitle a{color:#999;font-size:11px}.fm-sidebar .subtitle a:hover{text-decoration:none;color:#333}.folder-list{list-style:none;padding:0;margin:0}.folder-list li{display:block;border-bottom:1px solid #ddd}.folder-list li a{display:block;padding:5px 0;color:#666}.folder-list li a:hover{color:#333;text-decoration:none}.folder-list li i{margin-right:10px;width:16px}.fm-sidebar .tag-list{list-style:none;padding:0;margin:0}.fm-sidebar .tag-list li{float:left;margin-right:5px;margin-bottom:5px}.fm-sidebar .tag-list li a{display:block;padding:2px 7px;font-size:11px;background:#fcfcfc;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;color:#666}.fm-sidebar .tag-list li a:hover{color:#fff;text-decoration:none;background:#428BCA}.profile-name{margin:0;margin-bottom:10px;color:#333}.profile-location,.profile-position{font-size:13px;margin-bottom:3px}.profile-location .fa,.profile-position .fa{width:16px;margin-right:8px;text-align:center}.profile-header{margin-bottom:30px}.profile-header .btn .fa{margin-right:7px}.profile-social-list{list-style:none;margin:0;padding:0}.profile-social-list li{border-bottom:1px solid #ddd;padding:5px 0}.profile-social-list li:first-child{padding-top:0}.profile-social-list li .fa{margin-right:10px;width:16px}.activity-list{padding:20px 10px}.activity-list .act-media{border-bottom:1px solid #eee}.activity-list .act-thumb{width:28px;vertical-align:middle}.activity-list .act-media-body{line-height:16px}.activity-list .media-body p{line-height:21px;font-size:13px}.activity-list .media-title{font-family:'LatoBold';font-size:15px;margin-bottom:0}.activity-list .blog-media{padding-bottom:0}.activity-list .blog-media .media-object{width:120px;margin-right:10px;margin-top:5px}.activity-list .blog-media .media-title{margin:0}.activity-list .img-single img{width:50%}.uploadphoto-list{list-style:none;padding:0;margin:0;margin-top:20px}.uploadphoto-list li{width:20%;float:left}.uploadphoto-list li a{display:block;margin-right:5px}.follower-list{padding:10px}.follower-list .media{border-bottom:1px solid #eee}.follower-list .btn .fa{margin-right:5px}.follower-list .media-object{margin-right:10px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.follower-name{color:#333;margin:0;font-size:18px;margin-bottom:5px}.events{padding:10px}.events .subtitle{margin-bottom:20px}.events .media-object{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.events-list{list-style:none;margin:0;padding:0}.events-list .event-body{font-size:13px}.event-body small{display:block}.event-body small .fa{margin-right:5px;width:14px;text-align:center}.event-body p{margin-top:10px}.event-title{margin:0;margin-bottom:5px;font-size:16px;font-family:'LatoBold';line-height:normal}.blog-item{background:#fcfcfc;margin-bottom:20px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 3px 0 rgba(12,12,12,0.03);-webkit-box-shadow:0 3px 0 rgba(12,12,12,0.03);box-shadow:0 3px 0 rgba(12,12,12,0.03);position:relative}.blog-img img{-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0}.blog-details{padding:15px}.blog-title{font-family:'LatoBold';margin:0;font-weight:normal}.blog-title a{color:#333}.blog-meta{list-style:none;padding:0;margin:0;margin-top:10px}.blog-meta::after{clear:both;display:block;content:''}.blog-meta li{float:left;padding:0 5px;border-right:1px solid #ddd;line-height:normal;font-size:11px;margin-bottom:5px}.blog-meta li:first-child{padding-left:0}.blog-meta li:last-child{padding-right:0;border-right:0}.blog-summary{font-size:13px}.blog-summary p{margin:10px 0}.blog-summary .btn{margin-top:10px}.blog-quote .quote{margin:0;font-size:18px;line-height:24px}.blog-quote .quote a{padding:15px;background:#1d2939;color:#dadfe6;display:block;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;text-align:center}.blog-quote .quote a:hover{text-decoration:none;background:#2c394c}.blog-quote .quote-author{display:block;font-family:'LatoRegular';opacity:0.5}.blog-quote .blog-meta{margin-top:3px}.blog-video{-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;overflow:hidden;height:0;padding-top:30px;padding-bottom:56.25%;position:relative}.blog-video iframe{position:absolute;width:100%;height:100%;border:0;top:0;left:0}.blog-quote .quote-primary a{background-color:#428BCA}.blog-quote .quote-primary a:hover{background-color:#357EBD}.blog-quote .quote-success a{background-color:#1CAF9A;color:#fff}.blog-quote .quote-success a:hover{background-color:#17A08C}.blog-quote .quote-danger a{background-color:#D9534F;color:#fff}.blog-quote .quote-danger a:hover{background-color:#D43F3A}.panel-blog .blog-img img{width:100%}.blogsingle-title{font-family:'LatoRegular';color:#333;margin:0}.blog-content{max-width:975px}.authorpanel{margin:20px 0;border-top:1px solid #ddd;border-bottom:1px solid #ddd;padding:20px 0}.authorpanel::after{clear:both;display:block;content:''}.authorpanel .media{padding:0}.authorpanel .media-object{margin-right:15px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.authorpanel p{margin-bottom:0;font-size:13px}.blog-sidebar{font-size:13px;padding-left:5px;margin-top:5px}.sidebar-list{list-style:none;padding:0;margin:0}.sidebar-list li{display:block;border-bottom:1px solid #ddd}.sidebar-list li a{padding:7px 0;display:block}.sidebar-list li i{display:inline-block;margin-right:5px}.comment-list .media{border-bottom:1px solid #ddd}.comment-list .media-object{width:60px;margin-right:10px}.comment-list h4{margin:0;color:#333;font-size:16px}.comment-list .media-body{font-size:13px;position:relative}.comment-list .reply{padding:3px 8px;line-height:normal;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}.comment-list .media-body p:last-child{margin-bottom:0}.comment-list .media-body .media:last-child{padding-bottom:0;border-bottom:0}.letter-list{list-style:none;padding:0;margin:0;-moz-box-shadow:0 3px 0 rgba(12,12,12,0.03);-webkit-box-shadow:0 3px 0 rgba(12,12,12,0.03);box-shadow:0 3px 0 rgba(12,12,12,0.03)}.letter-list li{border-left:1px solid #eee;display:table-cell;width:1%}.letter-list li:first-child{border-left:0}.letter-list li a{display:block;padding:8px 0;text-align:center;text-transform:uppercase;background:#f7f7f7;-moz-transition:all 0.2s ease-out 0s;-webkit-transition:all 0.2s ease-out 0s;transition:all 0.2s ease-out 0s}.letter-list li:first-child a{-moz-border-radius:3px 0 0 3px;-webkit-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.letter-list li:last-child a{-moz-border-radius:0 3px 3px 0;-webkit-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.letter-list li a:hover{color:#fff;background:#428BCA;text-decoration:none;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.people-item{background:#fcfcfc;padding:20px;font-size:13px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 3px 0 rgba(12,12,12,0.03);-webkit-box-shadow:0 3px 0 rgba(12,12,12,0.03);box-shadow:0 3px 0 rgba(12,12,12,0.03);margin-bottom:20px}.people-item .media{padding:0}.people-item .media-object{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;margin-right:10px;width:110px;height:110px}.people-item .fa{margin-right:5px}.person-name{margin:0 0 5px 0;color:#428BCA}.people-item .social-list{margin-top:10px;margin-bottom:0;list-style:none;padding:0}.people-item .social-list::after{clear:both;display:block;content:''}.people-item .social-list li{float:left;margin-right:5px;margin-bottom:5px}.people-item .social-list li a{font-size:16px;border:1px solid #ddd;padding:3px 5px;width:30px;display:block;text-align:center;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;color:#666}.people-item .social-list li a:hover{background-color:#eee;color:#333}.people-item .social-list li a .fa{margin-right:0}.notfoundpanel{text-align:center;margin-top:10%;width:600px;margin:10% auto 0 auto}.notfoundpanel h1{font-size:130px;font-family:'LatoBold', sans-serif;color:#333;margin:0;line-height:130px}.notfoundpanel h3{color:#333;margin:0}.notfound h4{font-size:14px}.notfoundpanel form{width:350px;margin:20px auto 0 auto}.notfoundpanel .form-control{width:250px;float:left}.nav-sr li{border-bottom:1px solid #ddd}.nav-sr li a{padding:5px 0;color:#555}.nav-sr li a:hover{background:none;color:#333}.nav-sr li a i{margin-right:5px}.results-list .media{border-bottom:1px solid #eee}.results-list .media-object{width:125px;margin-right:10px}.results-list .filename{margin:0;font-size:16px}.results-list .media-body{line-height:18px}.table-invoice{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;border-bottom:1px solid #eee;margin-top:20px}.table-invoice thead>tr>th{background:none}.table-invoice thead>tr>th:last-child,.table-invoice thead>tr>th:nth-child(3),.table-invoice thead>tr>th:nth-child(2){text-align:right}.table-invoice tbody>tr>td:last-child,.table-invoice tbody>tr>td:nth-child(3),.table-invoice tbody>tr>td:nth-child(2){width:15%;text-align:right}.table-total{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;float:right}.table-total>tbody>tr>td{border:0}.table-total>tbody>tr>td:last-child{border-bottom:1px solid #ddd;width:15%;text-align:right}.table-total>tbody>tr>td:first-child{text-align:right;color:#333}.timeline-post .panel-body{padding:0}.timeline-post .form-control{border:0;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;resize:vertical}.timeline-post .form-control:focus{-moz-box-shdow:none;-webkit-box-shadow:none;box-shadow:none}.timeline-post .panel-footer{padding:10px;background:#f7f7f7}.timeline-btns{padding:5px}.timeline-btns a{display:inline-block;font-size:14px;width:20px;height:20px;color:#ccc;text-align:center;margin-right:5px}.timeline-btns a:hover{color:#666}.panel-timeline .panel-heading{padding:10px 10px 6px 10px;border-bottom:0}.panel-timeline .panel-body{padding:0 10px}.panel-timeline .panel-heading .media{margin:0;padding:0}.panel-timeline .panel-heading .media-object,.panel-timeline .panel-footer .media-object{width:32px;border-radius:1px}.panel-timeline .panel-body .media{margin-top:10px;padding-bottom:10px}.panel-timeline .panel-body .media-object{width:150px}.panel-timeline .panel-body h4{font-size:16px;margin-bottom:5px;font-family:'LatoBold', sans-serif}.panel-timeline h4{margin:0;font-size:13px;line-height:normal}.panel-timeline .panel-footer{padding:10px}.panel-timeline .panel-footer .form-control{padding:8px 10px;border-radius:0}.timeline-btns{padding:10px}.timeline-btns:after{clear:both;display:block;content:''}.timeline-video{-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;overflow:hidden;height:0;padding-top:30px;padding-bottom:56.25%;position:relative}.timeline-video iframe{position:absolute;width:100%;height:100%;border:0;top:0;left:0}.lockedpanel{width:250px;margin:10% auto 0 auto;text-align:center}.lockedpanel .loginuser{text-align:center}.lockedpanel .loginuser img{-moz-border-radius:100px;-webkit-border-radius:100px;border-radius:100px;background:rgba(255,255,255,0.4);padding:5px}.lockedpanel .locked{font-size:42px;margin-bottom:20px}.lockedpanel .logged{margin-top:20px}.lockedpanel .logged h4{margin:0;font-size:21px;color:#333}.lockedpanel form{margin-top:20px}.lockedpanel form .btn{display:block;margin-top:10px}.signinpanel{width:780px;margin:10% auto 0 auto}.signinpanel .logopanel{float:none;width:auto;padding:0;background:none}.signinpanel .signin-info ul{list-style:none;padding:0;margin:20px 0}.signinpanel .signin-info a{color:#333}.signinpanel .form-control{display:block;margin-top:15px}.signinpanel .uname{background:#fff url(/images/user.png) no-repeat 95% center}.signinpanel .pword{background:#fff url(/images/locked.png) no-repeat 95% center}.signinpanel .btn{margin-top:15px}.signinpanel form{background:rgba(255,255,255,0.2);border:1px solid #ccc;-moz-box-shadow:0 3px 0 rgba(12,12,12,0.03);-webkit-box-shadow:0 3px 0 rgba(12,12,12,0.03);box-shadow:0 3px 0 rgba(12,12,12,0.03);-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;padding:30px}.signinpanel form a{color:#666}.signuppanel{margin:5% auto 0 auto;width:780px}.signuppanel .row{margin-left:-5px;margin-right:-5px}.signuppanel .logopanel{float:none;width:auto;padding:0;background:none}.signuppanel .col-sm-6,.signuppanel .col-sm-5,.signuppanel .col-sm-3,.signuppanel .col-sm-4{padding-left:5px;padding-right:5px}.signuppanel .signup-info{padding-right:20px}.signuppanel form{background:rgba(255,255,255,0.2);border:1px solid #ccc;-moz-box-shadow:0 3px 0 rgba(12,12,12,0.03);-webkit-box-shadow:0 3px 0 rgba(12,12,12,0.03);box-shadow:0 3px 0 rgba(12,12,12,0.03);-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;padding:30px}.feat-list{margin-top:20px}.feat-list .fa{font-size:20px;border:2px solid #636e7b;padding:4px 5px;-moz-border-radius:100px;-webkit-border-radius:100px;border-radius:100px;float:left}.feat-list h4{margin-left:45px;padding-top:3px}.feat-list p{margin-left:45px}.signup-footer{border-top:1px solid #ddd;margin-top:30px;padding-top:10px;font-size:12px}.leftpanel-collapsed .logopanel{display:none}.leftpanel-collapsed .headerbar{margin-left:-50px}.leftpanel-collapsed .leftpanel{width:50px;top:50px}.leftpanel-collapsed .leftpanelinner{padding:0}.leftpanel-collapsed .leftpanelinner .sidebartitle{display:none}.leftpanel-collapsed .nav-bracket{margin:5px}.leftpanel-collapsed .nav-bracket li a{text-align:center;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;padding:10px;position:relative}.leftpanel-collapsed .nav-bracket>li>a:hover{border-radius:2px 0 0 2px}.leftpanel-collapsed .nav-bracket>li.nav-parent>a{background-image:none}.leftpanel-collapsed .nav-bracket>li>a>span:last-child{position:absolute;background:#fff;padding:10px 10px 10px 5px;left:40px;top:0;min-width:209px;text-align:left;z-index:100;display:none;-moz-box-shadow:0 3px 0 rgba(12,12,12,0.03);-webkit-box-shadow:0 3px 0 rgba(12,12,12,0.03);box-shadow:0 3px 0 rgba(12,12,12,0.03);-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.leftpanel-collapsed .nav-bracket>li>a .badge{display:none}.leftpanel-collapsed .nav-bracket>li.active>a>span:last-child{-moz-border-radius:0 2px 0 0;-webkit-border-radius:0 2px 0 0;border-radius:0 2px 0 0}.leftpanel-collapsed .nav-bracket ul{display:none}.leftpanel-collapsed .nav-bracket>li.nav-hover>a{background:#fff;color:#1d2939}.leftpanel-collapsed .nav-bracket>li.nav-hover.active>a{background:#1CAF9A;color:#fff}.leftpanel-collapsed .nav-bracket>li.nav-hover>a>span:last-child{display:block}.leftpanel-collapsed .nav-bracket>li.nav-hover.active>a>span:last-child{background:#1CAF9A;color:#fff}.leftpanel-collapsed .nav-bracket li.nav-hover ul{display:block;position:absolute;top:41px;left:45px;margin:0;min-width:204px;background:#1d2939;z-index:100;-moz-border-radius:0 0 2px 0;-webkit-border-radius:0 0 2px 0;border-radius:0 0 2px 0}.leftpanel-collapsed .nav-bracket ul a{text-align:left;padding:6px 10px;padding-left:0}.leftpanel-collapsed .nav-bracket ul a:hover{background:none}.leftpanel-collapsed .nav-bracket li a i{margin-right:0}.leftpanel-collapsed .mainpanel{margin-left:50px}.leftpanel-collapsed .infosummary{display:none}.leftpanel-collapsed .sticky-leftpanel{overflow-y:visible}.leftpanel-collapsed .nav-bracket .children{display:none}.chat-view{margin-right:240px}.rightpanel{width:240px;height:100%;position:fixed;overflow-y:auto;overflow-x:hidden;top:0;right:-240px;display:none}.chat-view .rightpanel{display:block;right:0}.chat-relative-view{right:240px}.chat-relative-view .rightpanel{display:block;right:0}.rightpanel,.rightpanel label{color:#999}.rightpanel .nav-tabs{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;background:#131d29;position:fixed;width:240px}.rightpanel .nav-tabs>li{display:table-cell;width:1%}.rightpanel .nav-tabs>li>a{padding:15px 20px 16px 20px;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;color:rgba(255,255,255,0.5)}.rightpanel .nav-tabs>.active>a,.rightpanel .nav-tabs>.active>a:hover,.rightpanel .nav-tabs>.active>a:focus{background:#1D2939;color:#fff}.rightpanel .tab-content{background:none;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;margin-top:45px}.chatuserlist{list-style:none;padding:0;border-bottom:1px dotted rgba(255,255,255,0.05)}.chatuserlist li{border-top:1px dotted rgba(255,255,255,0.05)}.chatuserlist .media-thumb{-moz-border-radius:50px;-webkit-border-radius:50px;border-radius:50px;border:2px solid #999;padding:3px;display:block}.chatuserlist .media{margin:10px 0;padding:0}.chatuserlist .online .media-thumb{border-color:#1CAF9A}.chatuserlist .media-object{width:30px;-moz-border-radius:50px;-webkit-border-radius:50px;border-radius:50px}.chatuserlist .media-body{line-height:normal;padding-top:7px}.chatuserlist .media-body small{color:#666;display:block}.chatuserlist .media-body strong{color:#bbb;font-size:13px;margin-bottom:4px;display:block}.chatuserlist .badge{margin-top:5px}.rightpanel .pane-settings{font-size:13px}.horizontal-menu{margin:0}.horizontal-menu .menutoggle{display:none}.horizontal-menu .leftpanel{display:none}.horizontal-menu .mainpanel{margin:0;width:100%;overflow:hidden}.horizontal-menu.chat-view .mainpanel{margin-left:-240px}.headerbar .logopanel{float:left;width:240px;border-right:1px solid #eee}.horizontal-menu.chat-view .navhor-bracket{padding:0}.headerbar .topnav{float:left;margin:0}.headerbar .topnav>ul{padding:0;margin:0;float:left}.headerbar .topnav>ul>li{margin:0;float:left}.headerbar .topnav>ul>li>a{padding:15px 15px 12px 15px;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;text-transform:uppercase;font-size:12px;color:#666;font-family:'LatoBold', sans-serif}.headerbar .topnav>ul>li>a:hover,.headerbar .topnav>ul>li>a:focus,.headerbar .topnav>ul>li.open>a,.headerbar .topnav>ul>li.active>a{box-shadow:0 3px 0 #1CAF9A;color:#1CAF9A;background:none}.headerbar .topnav>ul>li>a i{margin-right:5px}.headerbar .topnav>ul>li>a .badge{margin-left:10px}.headerbar .topnav>ul>li .dropdown-menu{margin-top:2px;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.headerbar .topnav>ul>li .dropdown-menu>li>a{padding:6px 10px;font-size:13px}.headerbar .topnav>ul>li .dropdown-menu>li>a:hover{background:#1CAF9A;color:#fff}.headerbar .topnav>ul>li .dropdown-menu i{display:none}.fixed{background:#c9cccf}.fixed section{margin:auto;max-width:1050px;position:relative;background:#1D2939}.fixed .rightpanel{background:#1D2939}.fixed-noleft .leftpanel{display:none}.fixed-noleft .mainpanel{margin-left:0}.fixed-noleft.chat-view .headerbar{margin-left:0}.fixed-noleft.chat-view .logopanel{display:block}.fixed-noleft .menutoggle{display:none}.bs-example-modal-panel .modal-content{background:none}.modal-photo-viewer{margin-top:0;margin-bottom:0;top:50%;left:50%;width:auto;position:absolute}.modal-photo-viewer .modal-content{position:relative;width:900px;height:600px;margin-left:-50%;margin-top:-300px}.modal-photo-viewer .modal-photo-left,.modal-photo-viewer .modal-photo-right{padding:0}.modal-photo-viewer .modal-photo-left{background:#000}.modal-photo-viewer .modal-photo{top:50%;position:relative}.modal-photo-viewer .row{margin-left:0;margin-right:0}.modal-photo-viewer .img-responsive{max-height:600px;margin:auto}.media-details{padding:20px}.media-details .categ{font-size:11px}.media-details .media-title{margin:0;margin-bottom:10px;color:#333;font-size:20px}.media-details p{font-size:13px}.media-details .details{margin-top:20px}.media-details .details h4{font-size:12px;color:#333;text-transform:uppercase;font-family:'LatoBold'}.media-details .table{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.media-details .table tr td{padding:3px 0;font-size:13px;background:none}.table-primary thead tr th{background:#428BCA}.table-success thead tr th{background:#1CAF9A}.table-warning thead tr th{background:#F0AD4E}.table-danger thead tr th{background:#D9534F}.table-info thead tr th{background:#5BC0DE}.table-dark thead tr th{background:#1D2939}.table.table-primary thead tr th,.table.table-success thead tr th,.table.table-danger thead tr th,.table.table-warning thead tr th,.table.table-info thead tr th,.table.table-dark thead tr th{color:#fff;border-bottom:0}.table-bordered.table-primary thead tr th,.table-bordered.table-success thead tr th,.table-bordered.table-warning thead tr th,.table-bordered.table-danger thead tr th,.table-bordered.table-info thead tr th,.table-bordered.table-dark thead tr th{border-color:rgba(255,255,255,0.2)}.panel .panel-table{padding:0}.panel-table .table{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;margin:0}.table-buglist thead tr th:first-child,.table-buglist tbody tr td:first-child{text-align:center;width:30px}.table-buglist .fa{cursor:pointer}.table-buglist .fa-bug{color:#D9534F}.table-buglist .fa-magic{color:#1CAF9A}.table-buglist .btn-group{margin:0}.table-buglist .btn-group .dropdown-toggle{color:#999;cursor:pointer}.table-buglist .btn-group .dropdown-toggle:hover{color:#666}.bug-key-title{margin:0;margin-bottom:5px}.dropdown-menu-head{background:#fff}.dropdown-menu-head .title{background:#1d2939;color:#94989d;padding:15px;text-transform:uppercase;font-size:11px;margin:0}.tp-icon{padding:10px 20px;line-height:20px;border-color:#ddd;position:relative}.tp-icon .badge{position:absolute;font-size:10px;font-weight:normal;right:4px;top:10px;line-height:13px;background-color:#D9534F;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;padding:2px 5px}.chosen-container-single .chosen-single div{width:30px;border-left:1px solid #ccc;background:#e4e7ea}.chosen-container-single .chosen-single div b{background:url(/images/dropdown-arrow.png) no-repeat 8px 15px}.chosen-container-active.chosen-with-drop .chosen-single div{width:30px;border-left:0;background:#fff}.chosen-container-active.chosen-with-drop .chosen-single div b{background-position:8px -33px}.bootstrap-timepicker-widget.dropdown-menu{width:230px}.colorpicker-input{width:200px;float:left}.colorselector{margin-top:4px}.stickyheader .logopanel{position:fixed;top:0;left:0;width:240px;z-index:100}.stickyheader .leftpanel{top:50px}.stickyheader .sticky-leftpanel{top:0}.stickyheader .sticky-leftpanel .leftpanelinner{margin-top:55px}.stickyheader .headerbar{position:fixed;top:0;left:240px;width:100%;z-index:100;box-shadow:0 1px rgba(0,0,0,0.05)}.stickyheader .mainpanel{padding-top:50px}.stickyheader .header-right{margin-right:240px}.stickyheader.leftpanel-collapsed .headerbar{left:50px}.stickyheader.leftpanel-collapsed .header-right{margin-right:0}.stickyheader.chat-view .headerbar{right:240px;width:auto}.mb5{margin-bottom:5px}.mb10{margin-bottom:10px}.mb15{margin-bottom:15px}.mb20{margin-bottom:20px}.mb30{margin-bottom:30px}.mb40{margin-bottom:40px}.mr5{margin-right:5px}.mr10{margin-right:10px}.mr20{margin-right:20px}.mr30{margin-right:30px}.mt5{margin-top:5px}.mt10{margin-top:10px}.nomargin{margin:0}.noshadow{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.border-right-0{border-right:0}.border-left-0{border-left:0}.nopadding{padding:0 !important}.padding-top-0{padding-top:0}.padding5{padding:5px}.padding10{padding:10px}.serif{font-family:'Georgia, serif'}.italic{font-style:italic}.dark{color:#333}.width100p{width:100%}.width20{width:20px}.width30{width:30px}.inblock{display:inline-block}@media screen and (max-width: 1024px){body{position:relative}.leftpanel{display:none}.mainpanel{margin-left:0;width:100%}.leftpanel-collapsed .leftpanel{display:none}.leftpanel-collapsed .mainpanel{margin-left:0}.leftpanel-collapsed .headerbar{margin-left:0}.leftpanel-show section{overflow-x:hidden}.leftpanel-show .leftpanel{display:block}.leftpanel-show .mainpanel{margin-left:240px}.stickyheader .headerbar{left:0}.stickyheader.leftpanel-show .headerbar{left:240px}.stickyheader.chat-relative-view .headerbar{right:240px;left:auto}.stickyheader .header-right{margin-right:0}.btn-demo{margin-bottom:20px}.leftpanelinner{padding:5px 10px}.leftpanelinner .searchform input{background:#131b26;border:0}.nav-horizontal{position:relative}.horizontal-menu .menutoggle{display:block}.horizontal-menu .headerbar .logopanel{display:none}.nav-horizontal .caret{display:none}.horizontal-menu .header-left,.horizontal-menu .topnav{float:none}.horizontal-menu-sidebar .header-left,.horizontal-menu-sidebar .topnav{float:none}.fixed-noleft .menutoggle{display:block}.fixed-noleft .headerbar .logopanel{display:none}.fixed-noleft .header-left,.fixed-noleft .topnav{float:none}}@media screen and (max-width: 767px){.searchform{position:relative}.headermenu li:nth-child(4){display:none}.leftpanel .searchform,.leftpanel .userlogged{display:block}.breadcrumb-wrapper{display:none}.headermenu .dropdown-menu:after{display:none}.rightpanel .nav-tabs.nav-justified>li>a,.rightpanel .nav-justified>li>a{margin-bottom:0}.panel-email .col-sm-3{display:none}}@media screen and (max-width: 640px){.notfoundpanel{width:auto;padding:0 20px}.notfoundpanel h1{font-size:72px;line-height:72px}.notfoundpanel h3{font-size:14px;line-height:normal}.notfound h4{font-size:12px;line-height:18px}.notfoundpanel form{width:auto}.notfoundpanel .form-control{float:none;width:100%}.notfoundpanel .btn{margin-top:10px;width:100%}.signinpanel,.signuppanel{margin:0 auto;width:480px;padding:20px}.signinpanel form{margin-top:20px}.signup-footer{margin-bottom:10px}.signuppanel .form-control{margin-bottom:10px}.signup-footer .pull-left,.signup-footer .pull-right{float:none !important;text-align:center}.widget-quick-status-post .nav-tabs.nav-justified>li{display:table-cell;width:1%;margin-bottom:-5px}.widget-quick-status-post .nav-tabs.nav-justified>li a{margin:0}.nav-tabs.nav-justified.nav-profile>li{float:none;margin-bottom:0;display:table-cell;width:1%}.nav-tabs.nav-justified.nav-profile>li a{margin:0;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0}.dataTables_info{float:none !important;text-align:center;margin-bottom:10px}.dataTables_paginate{margin-bottom:10px;text-align:center !important;float:none !important}.paginate_disabled_previous,.paginate_enabled_previous,.paginate_disabled_next,.paginate_enabled_next{float:none !important}.dataTables_filter,.dataTables_length{float:none !important;padding:10px 0 0 10px;margin:auto !important;display:inline-block}.table.dataTable th,.table.dataTable td{font-size:13px;min-width:150px}.paging_full_numbers{min-width:500px;margin:0 0 10px 10px}.paging_full_numbers:after{clear:both;display:block;content:''}}@media screen and (max-width: 480px){.signinpanel,.signuppanel{width:360px}.panel-email .pull-right{float:none !important}.pageheader h2{font-size:18px}.pageheader .glyphicon,.pageheader .fa{font-size:18px}.pageheader h2 span{font-size:11px}.fc-header td{display:block !important;text-align:center;width:100%;border:1px solid #eee;padding:10px !important;margin-top:-1px}.fc-button{padding:2px 5px !important;margin:0 !important}.fc-header-title h2{margin:0 !important}.filemanager-options li{padding:5px 7px}.filemanager-options .filter-type{display:block;float:none;border-top:1px solid #eee}.comment-list .media-object{width:30px;padding:2px}.comment-list .media>.pull-left{margin:0}.comment-list h4{font-size:13px}.comment-list .reply{font-size:10px;padding:2px 5px}.comment-list .media-body{font-size:12px;line-height:18px}.blog-content form{margin-bottom:20px}.letter-list{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.letter-list::after{clear:both;display:block;content:''}.letter-list li{float:left;width:auto;display:inline-block}.letter-list li a{display:block;padding:2px 5px}.btn-invoice:before{display:block;content:'';clear:both}.btn-invoice .btn{display:block;width:100%;margin-top:10px}.nav-tabs.nav-justified.nav-profile>li a{font-size:13px;padding:14px 10px}#bloglist>div{padding:0;margin:0;float:none;width:auto}}@media screen and (max-width: 360px){.pageheader h2 span{display:none}.blog-title{font-size:14px;line-height:18px}.blog-summary{font-size:12px;line-height:18px}.blog-summary .btn{padding:2px 5px;display:block;width:100%}.headermenu li:first-child .dropdown-menu{margin-right:-130px}.headermenu li:nth-child(2) .dropdown-menu{margin-right:-85px}.headermenu li:nth-child(3) .dropdown-menu{margin-right:-37px}.nav-tabs.nav-justified.nav-profile>li{float:none;display:block;width:auto}.blog-media .media-body{overflow:visible}.follower-list .btn{display:block;margin:0 0 5px 0;width:100%}.filemanager-options li{display:block;border-top:1px solid #eee}.filemanager-options li:first-child{border-top:0}.authorpanel .media-object{width:80px;margin-right:10px}.people-item .media-object{width:80px !important;height:80px !important}.pagination{margin-bottom:20px}}@media screen and (max-width: 320px){.signinpanel,.signuppanel{width:310px}}.toggle-slide{overflow:hidden;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;direction:ltr}.toggle-slide .toggle-on,.toggle-slide .toggle-off,.toggle-slide .toggle-blob{float:left}.toggle-slide .toggle-blob{position:relative;z-index:99;cursor:hand;cursor:grab;cursor:-moz-grab;cursor:-webkit-grab}.toggle-slide{overflow:hidden;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;direction:ltr}.toggle-slide .toggle-on,.toggle-slide .toggle-off,.toggle-slide .toggle-blob{float:left}.toggle-slide .toggle-blob{position:relative;z-index:99;cursor:hand;cursor:grab;cursor:-moz-grab;cursor:-webkit-grab}.toggle-default .toggle-slide{border:1px solid #ccc}.toggle-default .toggle-slide.active{border-color:#999}.toggle-default .toggle-slide .toggle-on,.toggle-default .toggle-slide .toggle-off,.toggle-default .toggle-slide .toggle-blob{font-size:11px;font-weight:500}.toggle-default .toggle-slide .toggle-on,.toggle-default .toggle-select .toggle-inner .active{background:#999;color:#fff}.toggle-default .toggle-slide .toggle-off,.toggle-default .toggle-select .toggle-on{color:#666;background:#f7f7f7}.toggle-default .toggle-slide .toggle-blob{background:#fff;border-right:1px solid #ccc}.toggle-default .toggle-slide.active .toggle-blob{border-left:1px solid #999;border-right:0}.toggle-default .toggle-slide .toggle-blob:hover{background:#fcfcfc}.toggle-primary .toggle-slide{border:1px solid #999}.toggle-primary .toggle-slide.active{border-color:#357EBD}.toggle-primary .toggle-slide .toggle-on,.toggle-primary .toggle-slide .toggle-off,.toggle-primary .toggle-slide .toggle-blob{font-size:11px;font-weight:500}.toggle-primary .toggle-slide .toggle-on,.toggle-primary .toggle-select .toggle-inner .active{background:#428BCA;color:#fff}.toggle-primary .toggle-slide .toggle-off,.toggle-primary .toggle-select .toggle-on{color:#fff;background:#bbb}.toggle-primary .toggle-slide .toggle-blob{background:#fff;border-right:1px solid #999}.toggle-primary .toggle-slide.active .toggle-blob{border-left:1px solid #357EBD;border-right:0}.toggle-primary .toggle-slide .toggle-blob:hover{background:#fcfcfc}.toggle-success .toggle-slide{border:1px solid #999}.toggle-success .toggle-slide.active{border-color:#1CAF9A}.toggle-success .toggle-slide .toggle-on,.toggle-success .toggle-slide .toggle-off,.toggle-success .toggle-slide .toggle-blob{font-size:11px;font-weight:500}.toggle-success .toggle-slide .toggle-on,.toggle-success .toggle-select .toggle-inner .active{background:#1CAF9A;color:#fff}.toggle-success .toggle-slide .toggle-off,.toggle-success .toggle-select .toggle-on{color:#fff;background:#bbb}.toggle-success .toggle-slide .toggle-blob{background:#fff;border-right:1px solid #999}.toggle-success .toggle-slide.active .toggle-blob{border-left:1px solid #4CAE4C;border-right:0}.toggle-success .toggle-slide .toggle-blob:hover{background:#fcfcfc}.toggle-warning .toggle-slide{border:1px solid #999}.toggle-warning .toggle-slide.active{border-color:#EEA236}.toggle-warning .toggle-slide .toggle-on,.toggle-warning .toggle-slide .toggle-off,.toggle-warning .toggle-slide .toggle-blob{font-size:11px;font-weight:500}.toggle-warning .toggle-slide .toggle-on,.toggle-warning .toggle-select .toggle-inner .active{background:#F0AD4E;color:#fff}.toggle-warning .toggle-slide .toggle-off,.toggle-warning .toggle-select .toggle-on{color:#fff;background:#bbb}.toggle-warning .toggle-slide .toggle-blob{background:#fff;border-right:1px solid #999}.toggle-warning .toggle-slide.active .toggle-blob{border-left:1px solid #EEA236;border-right:0}.toggle-warning .toggle-slide .toggle-blob:hover{background:#fcfcfc}.toggle-danger .toggle-slide{border:1px solid #999}.toggle-danger .toggle-slide.active{border-color:#D43F3A}.toggle-danger .toggle-slide .toggle-on,.toggle-danger .toggle-slide .toggle-off,.toggle-danger .toggle-slide .toggle-blob{font-size:11px;font-weight:500}.toggle-danger .toggle-slide .toggle-on,.toggle-danger .toggle-select .toggle-inner .active{background:#D9534F;color:#fff}.toggle-danger .toggle-slide .toggle-off,.toggle-danger .toggle-select .toggle-on{color:#fff;background:#bbb}.toggle-danger .toggle-slide .toggle-blob{background:#fff;border-right:1px solid #999}.toggle-danger .toggle-slide.active .toggle-blob{border-left:1px solid #D43F3A;border-right:0}.toggle-danger .toggle-slide .toggle-blob:hover{background:#fcfcfc}.input-group.exclusion{margin-top:4px}.input-group-btn.add-exclusion a:last-child{margin-top:4px}.ipset-contents-editor{min-height:300px}.ui-menu .ui-menu-item a,.ui-menu .ui-menu-item a:active,.ui-menu .ui-menu-item a:focus,.ui-menu .ui-menu-item a:hover{color:#2f4f4f}.ui-autocomplete{max-height:181px;border:1px solid #ccc;overflow-y:auto;overflow-x:hidden;background-color:#fff}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{margin:0px;background:url("/images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x;color:#2f4f4f}html{position:absolute;width:100%;height:100%;margin:0;padding:0}body{overflow-y:scroll;width:100%;height:100%;margin:0;padding:0}.start-editing:hover,.stop-editing:hover,.add-object:hover{cursor:pointer;text-decoration:underline}.control-icons .fa{cursor:pointer}.object.is-edited>.form-area{margin-left:-15px;margin-right:-15px;background-color:#f5f5f5;-webkit-border-radius:5px;border-radius:5px}.object.is-edited>.form-area>.row{margin-left:0;margin-right:0}.object.is-edited>.form-area form{margin:15px 0}.object.is-edited>.form-area .control-label{text-align:left}.object.is-edited>.form-area .form-control{font-size:18px}.user .avatar{display:inline-block;vertical-align:middle;width:30px;height:30px;overflow:hidden;-webkit-border-radius:5px;border-radius:5px;margin-right:4px}.user .avatar img{max-width:30px}.user .name{vertical-align:middle}.user .party{vertical-align:middle}.align-middle{vertical-align:middle}.add-objects-wrapper{margin:10px 0}.add-objects-wrapper .results{margin-bottom:15px}.add-objects-wrapper .results .user:hover{cursor:pointer}.add-objects-wrapper .results .user:hover .name{text-decoration:underline}.object.placeholder{background-color:#f0f0f0}.object-list ul li{padding:0}.object-list ul a{display:block;padding:15px 20px}.object-list ul a:hover{text-decoration:none}.object-list ul a:hover .sender{text-decoration:underline}.object-list ul a,.object-list ul a:link,.object-list ul a:visited,.object-list ul a:active{color:#636e7b}.splash-screen .row{margin-top:150px}.splash-screen .error-container{line-height:45px;font-size:16px;padding:0 15px}.equiwidth{min-width:110px}.fake-input-group .input-group-addon{border:1px solid #ccc;-webkit-border-radius:2px;border-radius:2px}.fake-input-group .fake-input{height:42px}.dashed{border-bottom:1px dashed #428bca;text-decoration:none}.dashed:hover{text-decoration:none;border-bottom:1px dashed #2a6496}html{height:auto}body{background-color:#e4e7ea}.navbar-main{background-color:#fff;border:0}.navbar-main .navbar-form{margin-top:7px;margin-bottom:6px}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{background-color:#e4e7ea}.input-group .btn{padding-top:9px;padding-bottom:9px}.input-group .btn-near-select{padding-top:7px;padding-bottom:7px}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span,.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:default}legend{padding-bottom:3px;margin-bottom:10px}.chosen-choices,.chosen-single{padding:4px !important}.chosen-single{padding-left:8px !important;padding-right:8px !important;line-height:32px !important}.chosen-container-single .chosen-single abbr{top:12px;right:34px}.chosen-disabled{opacity:1 !important}.chosen-disabled .chosen-choices{background-color:#eee}.chosen-disabled .chosen-choices li.search-choice{background-color:#dedede}.chosen-disabled .chosen-single{background-color:#eee}.chosen-disabled .chosen-single div{opacity:0.65}div.error{color:#a94442;margin-top:5px;margin-bottom:10px}.nav>li>a{font-family:'LatoBold'}select{-webkit-appearance:menulist-button}.panel-heading p{margin-top:5px}legend{font-size:17px}.signin,.signup{width:320px;padding:10px}.signin .sign-in-with-google,.signup .sign-in-with-google{width:100%}.signin p,.signup p{text-align:center;padding:0;margin:0 0 4px 0}.signin label.error,.signup label.error{color:#e24333 !important;padding:0 8px 4px}.navbar-brand{padding:5px}#nightMode{display:none}#nightMode:not(*:root){display:block}.not-found .pad{width:400px;margin:100px auto}.results>thead>tr>th:first-child,.results>tbody>tr>th:first-child,.results>tfoot>tr>th:first-child,.results>thead>tr>td:first-child,.results>tbody>tr>td:first-child,.results>tfoot>tr>td:first-child{padding-left:15px}.results>thead>tr>th:last-child,.results>tbody>tr>th:last-child,.results>tfoot>tr>th:last-child,.results>thead>tr>td:last-child,.results>tbody>tr>td:last-child,.results>tfoot>tr>td:last-child{padding-right:15px}.results form .form-group:last-child{margin-bottom:15px}.results form .form-group:last-child .btn-group{margin-bottom:0}.results .options-form>*{margin-top:7px;margin-bottom:7px}.results .options-form .controlsForTheHeartOfTheSun+fieldset{margin-top:10px}.results .options-form fieldset+.controlsForTheHeartOfTheSun{margin-top:10px}.results .pager{margin-top:0}.results .dropdown-toggle{cursor:pointer}.results .results-buttons{margin-top:10px;margin-bottom:10px}.results .results-buttons .btn-group{margin:0}.results .fieldset-toggle{cursor:pointer}.results .secondary-controls .interface-toggle-btn-group{display:none}.results *[data-toggle='popover']{margin-left:5px}.query-display{display:block;margin:10px 0;white-space:pre-line}.results-scroller{overflow:visible}.results-table{white-space:nowrap}.results-table>tbody>tr.highlighted>td,.results-table>tbody>tr.highlighted>th{background-color:#f5f5f5}.results-table thead th{cursor:pointer}.display-fields-block .checkbox{width:150px;height:25px;float:left;margin-top:0 !important}.num-recs{width:auto;display:inline;padding:8px;border:1px solid #ddd;color:#636e7b}.extras{margin-bottom:10px;text-align:center}.extras a{margin:0 5px}input-group.bin-time{margin-top:10px}input.stats-radio-input{width:60px}.bin-time{border-left:2px solid #563d7c}.rwstats-parameters .direction-input-group .btn-group{width:100%}.rwstats-parameters .direction-input-group .btn-group .btn{width:50%}.rwstats-parameters .input-group-addon label{vertical-align:top;margin:0 !important}.rwstats-parameters .input-group-addon.equisize-input-group-addon label{min-width:80px;text-align:left}.tuple-contents-editor{min-height:300px}.container-xs-height{display:table;padding-left:0px;padding-right:0px}.row-xs-height{display:table-row}.col-xs-height{display:table-cell;float:none}@media (min-width: 768px){.container-sm-height{display:table;padding-left:0px;padding-right:0px}.row-sm-height{display:table-row}.col-sm-height{display:table-cell;float:none}}@media (min-width: 992px){.container-md-height{display:table;padding-left:0px;padding-right:0px}.row-md-height{display:table-row}.col-md-height{display:table-cell;float:none}}@media (min-width: 1200px){.container-lg-height{display:table;padding-left:0px;padding-right:0px}.row-lg-height{display:table-row}.col-lg-height{display:table-cell;float:none}}.col-top{vertical-align:top}.col-middle{vertical-align:middle}.col-bottom{vertical-align:bottom}.dragtable-drag-handle{cursor:move}.dragtable-drag-wrapper{position:absolute;z-index:1000}.dragtable-drag-wrapper .dragtable-drag-col{opacity:0.7;filter:alpha(opacity=70);cursor:move}.dragtable-col-placeholder{border-left:1px dotted black;border-right:1px dotted black;color:#EFEFEF;background:#EFEFEF !important;visibility:visible !important}table .dragtable-col-placeholder:first{border-top:1px dotted black}.dragtable-col-placeholder *{opacity:0.0;visibility:hidden}.dragtable-col-placeholder{color:transparent !important}html{position:relative;min-height:100%}body{margin-bottom:60px}.footer{position:absolute;bottom:0;width:100%;height:45px} \ No newline at end of file diff --git a/private/bundle/programs/web.browser/app/images/logo.png b/private/bundle/programs/web.browser/app/images/logo.png index d401103..b61e827 100644 Binary files a/private/bundle/programs/web.browser/app/images/logo.png and b/private/bundle/programs/web.browser/app/images/logo.png differ diff --git a/private/bundle/programs/web.browser/1e322250cb8e06a7df65d83b477136b7bbff504f.js b/private/bundle/programs/web.browser/b55cd89ecbf81d1372b4e1ed02e0e2ca813ec38f.js similarity index 95% rename from private/bundle/programs/web.browser/1e322250cb8e06a7df65d83b477136b7bbff504f.js rename to private/bundle/programs/web.browser/b55cd89ecbf81d1372b4e1ed02e0e2ca813ec38f.js index 260d81b..f75a265 100644 --- a/private/bundle/programs/web.browser/1e322250cb8e06a7df65d83b477136b7bbff504f.js +++ b/private/bundle/programs/web.browser/b55cd89ecbf81d1372b4e1ed02e0e2ca813ec38f.js @@ -196,7 +196,7 @@ Router=Package["iron:router"].Router,RouteController=Package["iron:router"].Rout !function(){Template.__checkName("controlsForTheHeartOfTheSun"),Template.controlsForTheHeartOfTheSun=new Template("Template.controlsForTheHeartOfTheSun",function(){var a=this;return HTML.DIV({"class":"controlsForTheHeartOfTheSun"},HTML.DIV({"class":"btn-group"},HTML.BUTTON({"class":function(){return["execute"," ","btn"," ","btn-default"," ",Blaze.If(function(){return Spacebars.call(Spacebars.dot(a.lookup(".."),"isDashboard"))},function(){return"btn-xs"})]},type:"submit"},Blaze.If(function(){return Spacebars.call(a.lookup("isOutputStale"))},function(){return HTML.I({"class":["fa"," ","fa-fw"," ","fa-spinner"," ","fa-spin"]})},function(){return HTML.I({"class":["fa"," ","fa-fw"," ","fa-search"]})}),"\n",["Execute ",Blaze.View(function(){return Spacebars.mustache(a.lookup("executingIntervalString"))})]),"\n",HTML.BUTTON({"class":function(){return["btn"," ","btn-default"," ","dropdown-toggle"," ",Blaze.If(function(){return Spacebars.call(Spacebars.dot(a.lookup(".."),"isDashboard"))},function(){return"btn-xs"})]},type:"button","data-toggle":"dropdown"},HTML.Raw(''),"\n",HTML.Raw('Toggle Dropdown')),"\n",HTML.UL({"class":"dropdown-menu",role:"menu"},HTML.Raw('
  • Execute each 15 minutes
  • '),"\n",HTML.Raw('
  • Execute each 60 minutes
  • '),"\n",HTML.Raw('
  • Execute periodically...
  • '),"\n",Blaze.If(function(){return Spacebars.call(a.lookup("executingInterval"))},function(){return[HTML.LI({"class":"divider"}),HTML.LI(HTML.A({"class":"set-executing-interval",href:"#","data-interval":"0"},"Stop periodic execution"))]}))),HTML.Raw("\n \n"),Blaze.If(function(){return Spacebars.call(Spacebars.dot(a.lookup(".."),"isDashboard"))},function(){return HTML.DIV({"class":"btn-group"},HTML.A({href:function(){return Spacebars.mustache(a.lookup("path"))},"class":function(){return[Blaze.If(function(){return Spacebars.call(Spacebars.dot(a.lookup(".."),"isDashboard"))},function(){return"btn-xs"})," ","btn"," ","btn-default"]}},HTML.I({"class":["fa"," ","fa-pencil"]}),"\n","Edit"))},function(){return HTML.DIV({"class":["btn-group"," ","interface-toggle-btn-group"]},HTML.BUTTON({"class":function(){return["set-property"," ","btn"," ","btn-default"," ",[Blaze.If(function(){return Spacebars.dataMustache(a.lookup("condition"),a.lookup("interface"),"is","cmd")},function(){return"active"})," ",Blaze.If(function(){return Spacebars.call(Spacebars.dot(a.lookup(".."),"isDashboard"))},function(){return"btn-xs"})]]},"data-property":"interface","data-value":"cmd",type:"button"},HTML.I({"class":["fa"," ","fa-space-shuttle"]}),"\n","Command line"),"\n",HTML.BUTTON({"class":function(){return["set-property"," ","btn"," ","btn-default"," ",[Blaze.If(function(){return Spacebars.dataMustache(a.lookup("condition"),a.lookup("interface"),"is","builder")},function(){return"active"})," ",Blaze.If(function(){return Spacebars.call(Spacebars.dot(a.lookup(".."),"isDashboard"))},function(){return"btn-xs"})]]},"data-property":"interface","data-value":"builder",type:"button"},HTML.I({"class":["fa"," ","fa-cog"]}),"\n","Query builder"))}),HTML.Raw("\n \n"),Blaze.If(function(){return Spacebars.dataMustache(a.lookup("not"),Spacebars.dot(a.lookup(".."),"isDashboard"))},function(){return Blaze.If(function(){return Spacebars.call(a.lookup("isQuick"))},function(){return HTML.DIV({"class":"btn-group"},HTML.BUTTON({"class":function(){return["set-property"," ","btn"," ","btn-default"," ",Blaze.If(function(){return Spacebars.call(Spacebars.dot(a.lookup(".."),"isDashboard"))},function(){return"btn-xs"})]},"data-property":"isQuick","data-type":"boolean","data-value":"false",type:"button"},HTML.I({"class":["fa"," ","fa-save"]}),"\n","Save as regular query"))})}))})}(); !function(){Template.__checkName("fieldsets"),Template.fieldsets=new Template("Template.fieldsets",function(){var e=this;return[HTML.FIELDSET(HTML.LEGEND(HTML.SPAN({"class":"fieldset-toggle","data-fieldset":"time"},HTML.I({"class":function(){return["fa"," ","fa-fw"," ",Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),"time","in",e.lookup("expandedFieldsets"))},function(){return"fa-caret-down"},function(){return"fa-caret-right"})]}}),"\n","Time Range")),"\n",Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),"time","in",e.lookup("expandedFieldsets"))},function(){return[Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),e.lookup("startDateType"),"is","interval")},function(){return[HTML.DIV({"class":"row"},HTML.DIV({"class":"col-xs-6"},HTML.DIV({"class":"form-group"},HTML.LABEL({"class":"control-label"},["Start date (",HTML.A({href:"#","class":"set-property dashed","data-property":"startDateType","data-value":"offset"},"switch to rolling"),")"],"\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"Start date","data-content":"Used to view flow records ranging from a specific start date. Takes the form of YYYY/MM/DD[:HH], where the hour is optional. If specified with an end date, it this will return data for that range. If specified by itself, it will only return data for the start date selected. If no start date is specified, records for the current day will be returned."})),"\n",HTML.DIV({"class":"input-group"},HTML.SPAN({"class":"input-group-addon"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("startDateEnabled"),value:Spacebars.call(e.lookup("startDateEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("checkbox"))})),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("startDate"),value:Spacebars.call(e.lookup("startDate")),enabled:Spacebars.call(e.lookup("startDateEnabled")),placeholder:Spacebars.call("yyyy/mm/dd"),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("date"))}),"\n",HTML.SPAN({"class":"input-group-addon"},HTML.I({"class":["fa"," ","fa-calendar"," ","open-calendar"]}))))),"\n",HTML.DIV({"class":"col-xs-6"},HTML.DIV({"class":"form-group"},HTML.LABEL({"class":"control-label"},"End date","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"End Date","data-content":"Used in conjunction with Start Date to filter based on data returned for a specific time range. Takes the form of YYYY/MM/DD[:HH], where the hour is optional."})),"\n",HTML.DIV({"class":"input-group"},HTML.SPAN({"class":"input-group-addon"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("endDateEnabled"),value:Spacebars.call(e.lookup("endDateEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("checkbox"))})),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("endDate"),value:Spacebars.call(e.lookup("endDate")),enabled:Spacebars.call(e.lookup("endDateEnabled")),placeholder:Spacebars.call("yyyy/mm/dd"),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("date"))}),"\n",HTML.SPAN({"class":"input-group-addon"},HTML.I({"class":["fa"," ","fa-calendar"," ","open-calendar"]})))))),HTML.DIV({"class":"row"},HTML.DIV({"class":"col-xs-6"},HTML.DIV({"class":"form-group"},HTML.LABEL({"class":"control-label"},"Active time","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"Active time","data-content":"Used to view flow records within a specific time range. Takes the form of YYYY/MM/DD[:HH[:MM[:SS[.ssssss]]]]-YYYY/MM/DD[:HH[:MM[:SS[.ssssss]]]]. Both a start and ending time period must be specified."})),"\n",HTML.DIV({"class":"input-group"},HTML.SPAN({"class":"input-group-addon"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("activeTimeEnabled"),value:Spacebars.call(e.lookup("activeTimeEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("checkbox"))})),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("activeTime"),value:Spacebars.call(e.lookup("activeTime")),enabled:Spacebars.call(e.lookup("activeTimeEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("input"))})))))]}),Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),e.lookup("startDateType"),"is","offset")},function(){return HTML.DIV({"class":"row"},HTML.DIV({"class":"col-xs-6"},HTML.DIV({"class":"form-group"},HTML.LABEL({"class":"control-label"},["Start date rolling offset from moment of query execution (",HTML.A({href:"#","class":"set-property dashed","data-property":"startDateType","data-value":"interval"},"switch to interval"),")"],"\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"Start date rolling offset","data-content":'The Rolling Offset mechanism alters the start and end time upon successive query execution such that the time period of interest is the previous X-minutes from the time of execution. This feature is ideal for generating dashboards for static time intervals where you only care to know what is happening "in the past x-minutes."'})),"\n",HTML.DIV({"class":"input-group"},HTML.SPAN({"class":"input-group-addon"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("startDateOffsetEnabled"),value:Spacebars.call(e.lookup("startDateOffsetEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("checkbox"))})),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("startDateOffset"),value:Spacebars.call(e.lookup("startDateOffset")),enabled:Spacebars.call(e.lookup("startDateOffsetEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("input"))}),"\n",HTML.SPAN({"class":"input-group-addon"},"minutes")))),"\n",HTML.DIV({"class":"col-xs-6"},HTML.DIV({"class":"form-group"},HTML.LABEL({"class":"control-label"},"Predefined offsets"),"\n",HTML.DIV({"class":"input-group"},HTML.DIV({"class":"input-group-btn"},HTML.DIV({"class":"btn-group"},Blaze.Each(function(){return Spacebars.call(e.lookup("startDateOffsets"))},function(){return HTML.BUTTON({"class":function(){return["set-property"," ","btn"," ","btn-default"," ",Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),Spacebars.dot(e.lookup(".."),"startDateOffset"),"is",e.lookup("value"))},function(){return"active"})]},"data-property":"startDateOffset","data-value":function(){return Spacebars.mustache(e.lookup("value"))},type:"button"},Blaze.View(function(){return Spacebars.mustache(e.lookup("name"))}))})))))))})]})),HTML.FIELDSET(HTML.LEGEND(HTML.SPAN({"class":"fieldset-toggle","data-fieldset":"host"},HTML.I({"class":function(){return["fa"," ","fa-fw"," ",Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),"host","in",e.lookup("expandedFieldsets"))},function(){return"fa-caret-down"},function(){return"fa-caret-right"})]}}),"\n","Host")),"\n",Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),"host","in",e.lookup("expandedFieldsets"))},function(){return[HTML.DIV({"class":"row"},HTML.DIV({"class":"col-xs-6"},HTML.DIV({"class":"form-group"},HTML.LABEL({"class":"control-label"},"Source IP","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"Source IP","data-content":'Used to view flow records matching a specific source IP address. Can be expressed in the form of a single IP address like "192.168.1.25", or a range of IP addresses in CIDR notation, such as "192.168.1.0/24".'})),"\n",HTML.DIV({"class":"input-group"},HTML.SPAN({"class":"input-group-addon"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("saddressEnabled"),value:Spacebars.call(e.lookup("saddressEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("checkbox"))})),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("saddress"),value:Spacebars.call(e.lookup("saddress")),enabled:Spacebars.call(e.lookup("saddressEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("input"))})))),"\n",HTML.DIV({"class":"col-xs-6"},HTML.DIV({"class":"form-group"},HTML.LABEL({"class":"control-label"},"Source IP Set","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"Source IP Set","data-content":"Used to view flow records matching a group of source IP addresses specified in a saved IP Set. IP Sets can be created from the “IP Sets” page and used to reference commonly filtered hosts. This is often used for referencing local device ranges or specific groupings of devices based on their function, such as HTTP servers."})),"\n",HTML.DIV({"class":"input-group"},HTML.SPAN({"class":"input-group-addon"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("sipSetEnabled"),value:Spacebars.call(e.lookup("sipSetEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("checkbox"))})),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("sipSet"),value:Spacebars.call(e.lookup("sipSet")),options:Spacebars.call(e.lookup("ipsets")),enabled:Spacebars.call(e.lookup("sipSetEnabled")),withEmptyOption:Spacebars.call(!0),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("chosen"))}),"\n",HTML.SPAN({"class":"input-group-btn"},HTML.A({"class":["btn"," ","btn-default"],href:function(){return["/ipset/",Spacebars.mustache(e.lookup("sipSet"))]},disabled:function(){return Spacebars.mustache(e.lookup("not"),e.lookup("sipSet"))}},HTML.I({"class":["fa"," ","fa-pencil"]})),"\n",HTML.A({"class":["btn"," ","btn-default"],href:"/ipset/create"},HTML.I({"class":["fa"," ","fa-plus"]}))))))),HTML.DIV({"class":"row"},HTML.DIV({"class":"col-xs-6"},HTML.DIV({"class":"form-group"},HTML.LABEL({"class":"control-label"},"Destination IP","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"Destination IP","data-content":'Used to view flow records matching a specific destination IP address. Can be expressed in the form of a single IP address like "192.168.1.25", or a range of IP addresses in CIDR notation, such as "192.168.1.0/24".'})),"\n",HTML.DIV({"class":"input-group"},HTML.SPAN({"class":"input-group-addon"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("daddressEnabled"),value:Spacebars.call(e.lookup("daddressEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("checkbox"))})),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("daddress"),value:Spacebars.call(e.lookup("daddress")),enabled:Spacebars.call(e.lookup("daddressEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("input"))})))),"\n",HTML.DIV({"class":"col-xs-6"},HTML.DIV({"class":"form-group"},HTML.LABEL({"class":"control-label"},"Destination IP Set","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"Destination IP Set","data-content":"Used to view flow records matching a group of destination IP addresses specified in a saved IP Set. IP Sets can be created from the “IP Sets” page and used to reference commonly filtered hosts. This is often used for referencing local device ranges or specific groupings of devices based on their function, such as HTTP servers."})),"\n",HTML.DIV({"class":"input-group"},HTML.SPAN({"class":"input-group-addon"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("dipSetEnabled"),value:Spacebars.call(e.lookup("dipSetEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("checkbox"))})),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("dipSet"),value:Spacebars.call(e.lookup("dipSet")),options:Spacebars.call(e.lookup("ipsets")),enabled:Spacebars.call(e.lookup("dipSetEnabled")),withEmptyOption:Spacebars.call(!0),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("chosen"))}),"\n",HTML.SPAN({"class":"input-group-btn"},HTML.A({"class":["btn"," ","btn-default"],href:function(){return["/ipset/",Spacebars.mustache(e.lookup("dipSet"))]},disabled:function(){return Spacebars.mustache(e.lookup("not"),e.lookup("dipSet"))}},HTML.I({"class":["fa"," ","fa-pencil"]})),"\n",HTML.A({"class":["btn"," ","btn-default"],href:"/ipset/create"},HTML.I({"class":["fa"," ","fa-plus"]}))))))),HTML.DIV({"class":"row"},HTML.DIV({"class":"col-xs-6"},HTML.DIV({"class":"form-group"},HTML.LABEL({"class":"control-label"},"Any IP","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"Any IP","data-content":'Used to view flow records matching a specific source or destination IP address. Can be expressed in the form of a single IP address like “192.168.1.25", or a range of IP addresses in CIDR notation, such as "192.168.1.0/24".'})),"\n",HTML.DIV({"class":"input-group"},HTML.SPAN({"class":"input-group-addon"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("anyAddressEnabled"),value:Spacebars.call(e.lookup("anyAddressEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("checkbox"))})),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("anyAddress"),value:Spacebars.call(e.lookup("anyAddress")),enabled:Spacebars.call(e.lookup("anyAddressEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("input"))})))),"\n",HTML.DIV({"class":"col-xs-6"},HTML.DIV({"class":"form-group"},HTML.LABEL({"class":"control-label"},"Any IP Set","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"Any IP Set","data-content":"Used to view flow records matching a group of source or destination IP addresses specified in a saved IP Set. IP Sets can be created from the “IP Sets” page and used to reference commonly filtered hosts. This is often used for referencing local device ranges or specific groupings of devices based on their function, such as HTTP servers."})),"\n",HTML.DIV({"class":"input-group"},HTML.SPAN({"class":"input-group-addon"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("anySetEnabled"),value:Spacebars.call(e.lookup("anySetEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("checkbox"))})),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("anySet"),value:Spacebars.call(e.lookup("anySet")),options:Spacebars.call(e.lookup("ipsets")),enabled:Spacebars.call(e.lookup("anySetEnabled")),withEmptyOption:Spacebars.call(!0),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("chosen"))}),"\n",HTML.SPAN({"class":"input-group-btn"},HTML.A({"class":["btn"," ","btn-default"],href:function(){return["/ipset/",Spacebars.mustache(e.lookup("anySet"))]},disabled:function(){return Spacebars.mustache(e.lookup("not"),e.lookup("anySet"))}},HTML.I({"class":["fa"," ","fa-pencil"]})),"\n",HTML.A({"class":["btn"," ","btn-default"],href:"/ipset/create"},HTML.I({"class":["fa"," ","fa-plus"]})))))))]})),HTML.FIELDSET(HTML.LEGEND(HTML.SPAN({"class":"fieldset-toggle","data-fieldset":"port"},HTML.I({"class":function(){return["fa"," ","fa-fw"," ",Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),"port","in",e.lookup("expandedFieldsets"))},function(){return"fa-caret-down"},function(){return"fa-caret-right"})]}}),"\n","Port and protocol")),"\n",Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),"port","in",e.lookup("expandedFieldsets"))},function(){return[HTML.DIV({"class":"row"},HTML.DIV({"class":"col-xs-6"},HTML.DIV({"class":"form-group"},HTML.LABEL({"class":"control-label"},"Source port","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"Source port","data-content":"Used to view flow records matching a source port or group of source ports. Can be expressed as a single port like “80”, or a range of ports like “6300-6309”."})),"\n",HTML.DIV({"class":"input-group"},HTML.SPAN({"class":"input-group-addon"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("sportEnabled"),value:Spacebars.call(e.lookup("sportEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("checkbox"))})),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("sport"),value:Spacebars.call(e.lookup("sport")),enabled:Spacebars.call(e.lookup("sportEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("input"))})))),"\n",HTML.DIV({"class":"col-xs-6"},HTML.DIV({"class":"form-group"},HTML.LABEL({"class":"control-label"},"Flags","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"Flags","data-content":"Used to view flow records for TCP traffic that contains specified TCP flag values such as SYN, ACK, PSH, etc."})),"\n",HTML.DIV({"class":"input-group"},HTML.SPAN({"class":"input-group-addon"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("flagsAllEnabled"),value:Spacebars.call(e.lookup("flagsAllEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("checkbox"))})),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("flagsAll"),value:Spacebars.call(e.lookup("flagsAll")),enabled:Spacebars.call(e.lookup("flagsAllEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("input"))}))))),HTML.DIV({"class":"row"},HTML.DIV({"class":"col-xs-6"},HTML.DIV({"class":"form-group"},HTML.LABEL({"class":"control-label"},"Destination port","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"Destination port","data-content":"Used to view flow records matching a destination port or group of destination ports. Can be expressed as a single port like “80”, or a range of ports like “6300-6309”."})),"\n",HTML.DIV({"class":"input-group"},HTML.SPAN({"class":"input-group-addon"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("dportEnabled"),value:Spacebars.call(e.lookup("dportEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("checkbox"))})),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("dport"),value:Spacebars.call(e.lookup("dport")),enabled:Spacebars.call(e.lookup("dportEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("input"))})))),"\n",HTML.DIV({"class":"col-xs-6"},HTML.DIV({"class":"form-group"},HTML.LABEL({"class":"control-label"},"Protocol","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"Protocol","data-content":"Used to view flow records associated with specific Layer 4 protocols. These values are specified by the protocol’s decimal identification code. For example, TCP is identified by “6” and UDP is identified by “17”. If this field is left blank, all protocols are selected by default."})),"\n",HTML.DIV({"class":"input-group"},HTML.SPAN({"class":"input-group-addon"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("protocolEnabled"),value:Spacebars.call(e.lookup("protocolEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("checkbox"))})),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("protocol"),value:Spacebars.call(e.lookup("protocol")),enabled:Spacebars.call(e.lookup("protocolEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("input"))}))))),HTML.DIV({"class":"row"},HTML.DIV({"class":"col-xs-6"},HTML.DIV({"class":"form-group"},HTML.LABEL({"class":"control-label"},"Any port","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"Any port","data-content":"Used to view flow records matching a source or destination port or group of source or destination ports. Can be expressed as a single port like “80”, or a range of ports like “6300-6309”."})),"\n",HTML.DIV({"class":"input-group"},HTML.SPAN({"class":"input-group-addon"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("aportEnabled"),value:Spacebars.call(e.lookup("aportEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("checkbox"))})),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("aport"),value:Spacebars.call(e.lookup("aport")),enabled:Spacebars.call(e.lookup("aportEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("input"))})))))]})),HTML.FIELDSET(HTML.LEGEND(HTML.SPAN({"class":"fieldset-toggle","data-fieldset":"additional"},HTML.I({"class":function(){return["fa"," ","fa-fw"," ",Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),"additional","in",e.lookup("expandedFieldsets"))},function(){return"fa-caret-down"},function(){return"fa-caret-right"})]}}),"\n","Additional options")),"\n",Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),"additional","in",e.lookup("expandedFieldsets"))},function(){return[HTML.DIV({"class":"row"},HTML.DIV({"class":"col-xs-6"},HTML.DIV({"class":"form-group"},HTML.LABEL({"class":"control-label"},"Types","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"Types","data-content":'Used to view flow records based on how they are categorized by SiLK. This traffic can fall into multiple buckets, but the most commonly used types include “in” (inbound traffic), "inweb" (inbound web traffic), "out" (outbound traffic), "outweb" (outbound web traffic). Internal and external network segments are defined in your SiLK silk.conf configuration file. If this field is left blank, all types are selected by default.'})),"\n",HTML.DIV({"class":"input-group"},HTML.SPAN({"class":"input-group-addon"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("typesEnabled"),value:Spacebars.call(e.lookup("typesEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("checkbox"))})),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("types"),value:Spacebars.call(e.lookup("types")),options:Spacebars.call(e.lookup("typesOptions")),multiple:Spacebars.call(!0),enabled:Spacebars.call(e.lookup("typesEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("chosen"))})))),"\n",HTML.DIV({"class":"col-xs-6"},HTML.DIV({"class":"form-group"},HTML.LABEL({"class":"control-label"},"Source country","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"Source country","data-content":"Used to view flow records from a specific source country. Counties are identified by their official country code. For instance, the United States would be identified by “us”."})),"\n",HTML.DIV({"class":"input-group"},HTML.SPAN({"class":"input-group-addon"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("sccEnabled"),value:Spacebars.call(e.lookup("sccEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("checkbox"))})),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("scc"),value:Spacebars.call(e.lookup("scc")),options:Spacebars.call(e.lookup("countriesOptions")),multiple:Spacebars.call(!0),enabled:Spacebars.call(e.lookup("sccEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("chosen"))}))))),HTML.DIV({"class":"row"},HTML.DIV({"class":"col-xs-6"},HTML.DIV({"class":"form-group"},HTML.LABEL({"class":"control-label"},"Sensor","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"Sensor","data-content":"Used to view flow records associated with a specific sensor or group of sensors. Sensors are configured in your SiLK sensors.conf configuration file. If this field is left blank, all sensors are selected by default."})),"\n",HTML.DIV({"class":"input-group"},HTML.SPAN({"class":"input-group-addon"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("sensorEnabled"),value:Spacebars.call(e.lookup("sensorEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("checkbox"))})),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("sensor"),value:Spacebars.call(e.lookup("sensor")),enabled:Spacebars.call(e.lookup("sensorEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("input"))})))),"\n",HTML.DIV({"class":"col-xs-6"},HTML.DIV({"class":"form-group"},HTML.LABEL({"class":"control-label"},"Destination country","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"Destination country","data-content":"Used to view flow records to a specific destination country. Counties are identified by their official country code. For instance, the United States would be identified by “us”."})),"\n",HTML.DIV({"class":"input-group"},HTML.SPAN({"class":"input-group-addon"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("dccEnabled"),value:Spacebars.call(e.lookup("dccEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("checkbox"))})),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("dcc"),value:Spacebars.call(e.lookup("dcc")),options:Spacebars.call(e.lookup("countriesOptions")),multiple:Spacebars.call(!0),enabled:Spacebars.call(e.lookup("dccEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("chosen"))}))))),HTML.DIV({"class":"row"},HTML.DIV({"class":"col-xs-6"},HTML.DIV({"class":"form-group"},HTML.LABEL({"class":"control-label"},"Tuple File","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"Tuple File","data-content":"This switch provides support for partitioning by arbitrary subsets of the basic five-tuple. These are referenced in the Tuple tab in the navbar."})),"\n",HTML.DIV({"class":"input-group"},HTML.SPAN({"class":"input-group-addon"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("tupleFileEnabled"),value:Spacebars.call(e.lookup("tupleFileEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("checkbox"))})),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("tupleFile"),value:Spacebars.call(e.lookup("tupleFile")),options:Spacebars.call(e.lookup("tuples")),enabled:Spacebars.call(e.lookup("tupleFileEnabled")),withEmptyOption:Spacebars.call(!0),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("chosen"))}),"\n",HTML.SPAN({"class":"input-group-btn"},HTML.A({"class":["btn"," ","btn-default"],href:function(){return["/tuple/",Spacebars.mustache(e.lookup("tupleFile"))]},disabled:function(){return Spacebars.mustache(e.lookup("not"),e.lookup("tupleFile"))}},HTML.I({"class":["fa"," ","fa-pencil"]})),"\n",HTML.A({"class":["btn"," ","btn-default"],href:"/tuple/create"},HTML.I({"class":["fa"," ","fa-plus"]})))))),"\n",HTML.DIV({"class":"col-xs-6"},HTML.DIV({"class":"form-group"},HTML.LABEL({"class":"control-label"},"Tuple Direction","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"Tuple Direction","data-content":"Allows you to change the comparison between the tuple and the SiLK Flow record. This switch allows one to look for traffic in the reverse direction (or both directions) without having to write all of the rules twice."})),"\n",HTML.DIV({"class":"input-group"},HTML.SPAN({"class":"input-group-addon"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("tupleDirectionEnabled"),value:Spacebars.call(e.lookup("tupleDirectionEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("checkbox"))})),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("tupleDirection"),value:Spacebars.call(e.lookup("tupleDirection")),options:Spacebars.call(e.lookup("tupleDirectionOptions")),enabled:Spacebars.call(e.lookup("tupleDirectionEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("chosen"))}))))),HTML.DIV({"class":"row" -},HTML.DIV({"class":"col-xs-6"},HTML.DIV({"class":"form-group"},HTML.LABEL({"class":"control-label"},"Tuple Delimiter","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"Tuple Delimiter","data-content":"Specifies the character separating the input fields. When the switch is not provided, the default of | is used."})),"\n",HTML.DIV({"class":"input-group"},HTML.SPAN({"class":"input-group-addon"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("tupleDelimiterEnabled"),value:Spacebars.call(e.lookup("tupleDelimiterEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("checkbox"))})),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("tupleDelimiter"),value:Spacebars.call(e.lookup("tupleDelimiter")),enabled:Spacebars.call(e.lookup("tupleDelimiterEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("input"))})))),"\n",HTML.DIV({"class":"col-xs-6"},HTML.DIV({"class":"form-group"},HTML.LABEL({"class":"control-label"},"Tuple Fields","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"Tuple Fields","data-content":'These define how to interpret the list of fields (columns) in the Tuple File in the order in which they appear in the file. For instance, if you have two ip addresses, you might use "sip,dip".'})),"\n",HTML.DIV({"class":"input-group"},HTML.SPAN({"class":"input-group-addon"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("tupleFieldsEnabled"),value:Spacebars.call(e.lookup("tupleFieldsEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("checkbox"))})),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("tupleFields"),value:Spacebars.call(e.lookup("tupleFields")),enabled:Spacebars.call(e.lookup("tupleFieldsEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("input"))}))))),HTML.DIV({"class":"row"},HTML.DIV({"class":"col-xs-12"},HTML.DIV({"class":"form-group"},HTML.LABEL({"class":"control-label"},"Additional parameters","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"Additional parameters","data-content":"Used to specify additional SiLK rwfilter command line options not made available through the FlowBAT interface. This should be used by advanced users only."})),"\n",HTML.DIV({"class":["input-group"," ","additional-parameters-form-group"]},HTML.SPAN({"class":"input-group-addon"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("additionalParametersEnabled"),value:Spacebars.call(e.lookup("additionalParametersEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("checkbox"))})),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("additionalParameters"),value:Spacebars.call(e.lookup("additionalParameters")),enabled:Spacebars.call(e.lookup("additionalParametersEnabled")),placeholder:Spacebars.call("Raw command-line options"),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("input"))}))))),HTML.DIV({"class":"row"},HTML.DIV({"class":"col-xs-12"},HTML.DIV({"class":"form-group"},HTML.LABEL({"class":"control-label"},"Exclusions"),"\n",HTML.DIV({"class":["input-group"," ","additional-parameters-form-group"]},HTML.SPAN({"class":"input-group-addon"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("additionalExclusionsCmdEnabled"),value:Spacebars.call(e.lookup("additionalExclusionsCmdEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("checkbox"))})),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("additionalExclusionsCmd"),value:Spacebars.call(e.lookup("additionalExclusionsCmd")),enabled:Spacebars.call(e.lookup("additionalExclusionsCmdEnabled")),placeholder:Spacebars.call('Use "OR" to separate exclusions, for example: --type=7 OR --dport=80'),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("input"))})))))]})),HTML.FIELDSET(HTML.Raw('Output type\n'),"\n",HTML.DIV({"class":"row"},HTML.DIV({"class":"col-xs-6"},Spacebars.include(e.lookupTemplate("outputField"))))),Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),e.lookup("output"),"is","rwstats")},function(){return[HTML.FIELDSET({"class":"rwstats-parameters"},HTML.LEGEND("Stats parameters","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"rwstats fields","data-content":"These parameters determine how the statistics are to be calculated by selecting Top-N or Bottom-N, and a value to limit the amount of output. Count sets a static limit (top 20 for instance), threshold outputs all results over/under a specific stats VALUE, and percentage prints the bins where the primary value is greater-than (or less-than) N percent of the sum of the primary values across all bins."})),"\n",HTML.DIV({"class":"row"},HTML.DIV({"class":"col-xs-2"},HTML.DIV({"class":["input-group"," ","direction-input-group"]},HTML.DIV({"class":"input-group-btn"},HTML.DIV({"class":"btn-group"},HTML.BUTTON({"class":function(){return["set-property"," ","btn"," ","btn-default"," ",[Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),e.lookup("rwstatsDirection"),"is","top")},function(){return"active"})," ",Blaze.If(function(){return Spacebars.call(Spacebars.dot(e.lookup(".."),"isDashboard"))},function(){return"btn-xs"})]]},"data-property":"rwstatsDirection","data-value":"top",type:"button"},HTML.I({"class":["fa"," ","fa-hand-o-up"]}),"\n","Top"),"\n",HTML.BUTTON({"class":function(){return["set-property"," ","btn"," ","btn-default"," ",[Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),e.lookup("rwstatsDirection"),"is","bottom")},function(){return"active"})," ",Blaze.If(function(){return Spacebars.call(Spacebars.dot(e.lookup(".."),"isDashboard"))},function(){return"btn-xs"})]]},"data-property":"rwstatsDirection","data-value":"bottom",type:"button"},HTML.I({"class":["fa"," ","fa-hand-o-down"]}),"\n","Bottom"))))),"\n",HTML.DIV({"class":"col-xs-2"},HTML.DIV({"class":"form-group"},HTML.DIV({"class":"input-group"},HTML.SPAN({"class":["input-group-addon"," ","equisize-input-group-addon"]},HTML.LABEL(Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),object:Spacebars.call(e.lookup(".")),property:Spacebars.call("rwstatsMode"),value:Spacebars.call("count"),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("radio"))}),"\n","Count")),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("rwstatsCountModeValue"),value:Spacebars.call(e.lookup("rwstatsCountModeValue")),enabled:Spacebars.call(e.lookup("rwstatsCountModeValueIsEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("input"))})))),"\n",HTML.DIV({"class":"col-xs-2"},HTML.DIV({"class":"form-group"},HTML.DIV({"class":"input-group"},HTML.SPAN({"class":["input-group-addon"," ","equisize-input-group-addon"]},HTML.LABEL(Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),object:Spacebars.call(e.lookup(".")),property:Spacebars.call("rwstatsMode"),value:Spacebars.call("threshold"),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("radio"))}),"\n","Threshold")),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("rwstatsThresholdModeValue"),value:Spacebars.call(e.lookup("rwstatsThresholdModeValue")),enabled:Spacebars.call(e.lookup("rwstatsThresholdModeValueIsEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("input"))})))),"\n",HTML.DIV({"class":"col-xs-2"},HTML.DIV({"class":"form-group"},HTML.DIV({"class":"input-group"},HTML.SPAN({"class":["input-group-addon"," ","equisize-input-group-addon"]},HTML.LABEL(Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),object:Spacebars.call(e.lookup(".")),property:Spacebars.call("rwstatsMode"),value:Spacebars.call("percentage"),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("radio"))}),"\n","Percentage")),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("rwstatsPercentageModeValue"),value:Spacebars.call(e.lookup("rwstatsPercentageModeValue")),enabled:Spacebars.call(e.lookup("rwstatsPercentageModeValueIsEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("input"))})))),"\n",HTML.DIV({"class":["col-xs-2"," ","col-xs-offset-2"," ","equisize-input-group-addon"]},HTML.DIV({"class":"input-group"},HTML.SPAN({"class":"input-group-addon"},HTML.LABEL(Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("rwstatsBinTimeEnabled"),value:Spacebars.call(e.lookup("rwstatsBinTimeEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("checkbox"))}),"\n","Bin time")),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("rwstatsBinTime"),value:Spacebars.call(e.lookup("rwstatsBinTime")),placeholder:Spacebars.call("60"),enabled:Spacebars.call(e.lookup("rwstatsBinTimeEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("input"))}))))),HTML.FIELDSET({"class":"display-fields-block"},HTML.LEGEND("Stats fields","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"rwstats fields","data-content":"To compute a Top-N or Bottom-N list, the key field(s) must be specified. These are the flow attributes (a.k.a. fields or columns) that make up the key into which flows are binned and statistics are computed from. Bin-time is unique for when time FIELDS are used, to determine the time bin top/bottom-n statistics."})),"\n",HTML.DIV({"class":"row"},HTML.DIV({"class":"col-xs-12"},Blaze.Each(function(){return Spacebars.call(e.lookup("rwstatsFieldsOrder"))},function(){return HTML.DIV({"class":"checkbox"},HTML.LABEL(HTML.INPUT({"class":"field-checkbox",type:"checkbox",checked:function(){return Spacebars.mustache(e.lookup("fieldIsSelected"),e.lookup(".."),"rwstatsFields")},value:function(){return Spacebars.mustache(e.lookup("."))},"data-property":"rwstatsFields"}),"\n",Blaze.View(function(){return Spacebars.mustache(e.lookup("t"),e.lookup("fieldI18nString"))})))})))),HTML.FIELDSET({"class":"display-fields-block"},HTML.LEGEND("Stats values","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"rwstats values","data-content":'These options determine how the statistics are calculated (such as if you are looking for top 10 dip by BYTES for example). When computing a Top-N or Bottom-N, all flows that have the same key field(s) will be binned together. For each bin, one or more aggregate values are computed as specified by VALUES, a comma separated list of names. VALUES that are not Records, Packets, or Bytes are instead "distinct" grouping values (such as how many "distinct-dcc" did a user talk to).'})),"\n",HTML.DIV({"class":"row"},HTML.DIV({"class":"col-xs-12"},Blaze.Each(function(){return Spacebars.call(e.lookup("rwstatsValuesOrder"))},function(){return HTML.DIV({"class":"checkbox"},HTML.LABEL(HTML.INPUT({"class":"field-checkbox",type:"checkbox",checked:function(){return Spacebars.mustache(e.lookup("fieldIsSelected"),e.lookup(".."),"rwstatsValues")},value:function(){return Spacebars.mustache(e.lookup("."))},"data-property":"rwstatsValues"}),"\n",Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),e.lookup("."),"in",Spacebars.dot(e.lookup("share"),"rwstatsValues"))},function(){return HTML.STRONG(Blaze.View(function(){return Spacebars.mustache(e.lookup("t"),e.lookup("fieldI18nString"))}))},function(){return Blaze.View(function(){return Spacebars.mustache(e.lookup("t"),e.lookup("fieldI18nString"))})})))}))),"\n",HTML.DIV({"class":"row"},HTML.DIV({"class":"col-xs-4"},HTML.DIV({"class":"form-group"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("rwstatsPrimaryValue"),value:Spacebars.call(e.lookup("rwstatsPrimaryValue")),options:Spacebars.call(e.lookup("rwstatsPrimaryValueOptions")),placeholder:Spacebars.call("Primary stats value"),withEmptyOption:Spacebars.call(!0),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("chosen"))})))))]}),Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),e.lookup("output"),"is","rwcount")},function(){return HTML.FIELDSET({"class":"rwcount-parameters"},HTML.LEGEND("Count parameters"),"\n",HTML.DIV({"class":"row"},HTML.DIV({"class":"col-xs-5"},HTML.DIV({"class":"form-group"},HTML.LABEL({"class":"control-label"},"Bin size","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"bin size","data-content":"Denote the size of each time bin, in seconds; defaults to 30 seconds."})),"\n",HTML.DIV({"class":"input-group"},HTML.SPAN({"class":"input-group-addon"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("rwcountBinSizeEnabled"),value:Spacebars.call(e.lookup("rwcountBinSizeEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("checkbox"))})),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("rwcountBinSize"),value:Spacebars.call(e.lookup("rwcountBinSize")),enabled:Spacebars.call(e.lookup("rwcountBinSizeEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("input"))}),"\n",HTML.SPAN({"class":"input-group-addon"},"seconds")))),"\n",HTML.DIV({"class":"col-xs-5"},HTML.DIV({"class":"form-group"},HTML.LABEL({"class":"control-label"},"Load scheme","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"load scheme","data-content":"Specify how a flow record that spans multiple bins allocates its bytes and packets among the bins. The default scheme is time-proportional."})),"\n",HTML.DIV({"class":"input-group"},HTML.SPAN({"class":"input-group-addon"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("rwcountLoadSchemeEnabled"),value:Spacebars.call(e.lookup("rwcountLoadSchemeEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("checkbox"))})),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("rwcountLoadScheme"),value:Spacebars.call(e.lookup("rwcountLoadScheme")),options:Spacebars.call(e.lookup("rwcountLoadSchemeOptions")),enabled:Spacebars.call(e.lookup("rwcountLoadSchemeEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("chosen"))})))),"\n",HTML.DIV({"class":"col-xs-2"},HTML.DIV({"class":"form-group"},HTML.LABEL({"class":"control-label"},"Skip zeroes"),"\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"skip zeroes","data-content":"Disable printing of bins with no traffic. By default, all bins are printed."}),"\n",HTML.DIV({"class":["input-group"," ","fake-input-group"]},HTML.SPAN({"class":"input-group-addon"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("rwcountSkipZeroes"),value:Spacebars.call(e.lookup("rwcountSkipZeroes")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("checkbox"))})),"\n",HTML.DIV({"class":"fake-input"}))))))}),Blaze.If(function(){return Spacebars.call(Spacebars.dot(e.lookup("availableChartTypes"),"length"))},function(){return Spacebars.include(e.lookupTemplate("presentationFieldset"))}),HTML.FIELDSET(HTML.Raw("Final query"),"\n",HTML.DIV({"class":"row"},HTML.DIV({"class":"col-xs-12"},Blaze.If(function(){return Spacebars.dataMustache(e.lookup("inputCommand"),e.lookup("currentConfig"),Spacebars.dot(e.lookup("currentUser"),"profile"),!0)},function(){return[HTML.CODE({"class":"query-display"},"$ ",Blaze.View(function(){return Spacebars.mustache(e.lookup("inputCommand"),e.lookup("currentConfig"),Spacebars.dot(e.lookup("currentUser"),"profile"),!0)})),HTML.CODE({"class":"query-display"},"$ ",Blaze.View(function(){return Spacebars.mustache(e.lookup("outputCommand"),e.lookup("currentConfig"),Spacebars.dot(e.lookup("currentUser"),"profile"),!0)}))]},function(){return HTML.CODE({"class":"query-display"},HTML.EM("Please set some options to build the query"))}))))]})}(); +},HTML.DIV({"class":"col-xs-6"},HTML.DIV({"class":"form-group"},HTML.LABEL({"class":"control-label"},"Tuple Delimiter","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"Tuple Delimiter","data-content":"Specifies the character separating the input fields. When the switch is not provided, the default of | is used."})),"\n",HTML.DIV({"class":"input-group"},HTML.SPAN({"class":"input-group-addon"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("tupleDelimiterEnabled"),value:Spacebars.call(e.lookup("tupleDelimiterEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("checkbox"))})),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("tupleDelimiter"),value:Spacebars.call(e.lookup("tupleDelimiter")),enabled:Spacebars.call(e.lookup("tupleDelimiterEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("input"))})))),"\n",HTML.DIV({"class":"col-xs-6"},HTML.DIV({"class":"form-group"},HTML.LABEL({"class":"control-label"},"Tuple Fields","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"Tuple Fields","data-content":'These define how to interpret the list of fields (columns) in the Tuple File in the order in which they appear in the file. For instance, if you have two ip addresses, you might use "sip,dip".'})),"\n",HTML.DIV({"class":"input-group"},HTML.SPAN({"class":"input-group-addon"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("tupleFieldsEnabled"),value:Spacebars.call(e.lookup("tupleFieldsEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("checkbox"))})),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("tupleFields"),value:Spacebars.call(e.lookup("tupleFields")),enabled:Spacebars.call(e.lookup("tupleFieldsEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("input"))}))))),HTML.DIV({"class":"row"},HTML.DIV({"class":"col-xs-12"},HTML.DIV({"class":"form-group"},HTML.LABEL({"class":"control-label"},"Additional parameters","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"Additional parameters","data-content":"Used to specify additional SiLK rwfilter command line options not made available through the FlowBAT interface. This should be used by advanced users only."})),"\n",HTML.DIV({"class":["input-group"," ","additional-parameters-form-group"]},HTML.SPAN({"class":"input-group-addon"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("additionalParametersEnabled"),value:Spacebars.call(e.lookup("additionalParametersEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("checkbox"))})),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("additionalParameters"),value:Spacebars.call(e.lookup("additionalParameters")),enabled:Spacebars.call(e.lookup("additionalParametersEnabled")),placeholder:Spacebars.call("Raw command-line options"),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("input"))}))))),HTML.DIV({"class":"row"},HTML.DIV({"class":"col-xs-12"},HTML.DIV({"class":"form-group"},HTML.LABEL({"class":"control-label"},"Exclusions"),"\n",HTML.DIV({"class":["input-group"," ","additional-parameters-form-group"]},HTML.SPAN({"class":"input-group-addon"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("additionalExclusionsCmdEnabled"),value:Spacebars.call(e.lookup("additionalExclusionsCmdEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("checkbox"))})),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("additionalExclusionsCmd"),value:Spacebars.call(e.lookup("additionalExclusionsCmd")),enabled:Spacebars.call(e.lookup("additionalExclusionsCmdEnabled")),placeholder:Spacebars.call('Use "OR" to separate exclusions, for example: --type=7 OR --dport=80'),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("input"))})))))]})),HTML.FIELDSET(HTML.Raw('Output type\n'),"\n",HTML.DIV({"class":"row"},HTML.DIV({"class":"col-xs-6"},Spacebars.include(e.lookupTemplate("outputField"))))),Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),e.lookup("output"),"is","rwstats")},function(){return[HTML.FIELDSET({"class":"rwstats-parameters"},HTML.LEGEND("Stats parameters","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"Stats Parameters","data-content":"These parameters determine how the statistics are to be calculated by selecting Top-N or Bottom-N, and a value to limit the amount of output. Count sets a static limit (top 20 for instance), threshold outputs all results over/under a specific stats VALUE, and percentage prints the bins where the primary value is greater-than (or less-than) N percent of the sum of the primary values across all bins."})),"\n",HTML.DIV({"class":"row"},HTML.DIV({"class":"col-xs-2"},HTML.DIV({"class":["input-group"," ","direction-input-group"]},HTML.DIV({"class":"input-group-btn"},HTML.DIV({"class":"btn-group"},HTML.BUTTON({"class":function(){return["set-property"," ","btn"," ","btn-default"," ",[Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),e.lookup("rwstatsDirection"),"is","top")},function(){return"active"})," ",Blaze.If(function(){return Spacebars.call(Spacebars.dot(e.lookup(".."),"isDashboard"))},function(){return"btn-xs"})]]},"data-property":"rwstatsDirection","data-value":"top",type:"button"},HTML.I({"class":["fa"," ","fa-hand-o-up"]}),"\n","Top"),"\n",HTML.BUTTON({"class":function(){return["set-property"," ","btn"," ","btn-default"," ",[Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),e.lookup("rwstatsDirection"),"is","bottom")},function(){return"active"})," ",Blaze.If(function(){return Spacebars.call(Spacebars.dot(e.lookup(".."),"isDashboard"))},function(){return"btn-xs"})]]},"data-property":"rwstatsDirection","data-value":"bottom",type:"button"},HTML.I({"class":["fa"," ","fa-hand-o-down"]}),"\n","Bottom"))))),"\n",HTML.DIV({"class":"col-xs-2"},HTML.DIV({"class":"form-group"},HTML.DIV({"class":"input-group"},HTML.SPAN({"class":["input-group-addon"," ","equisize-input-group-addon"]},HTML.LABEL(Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),object:Spacebars.call(e.lookup(".")),property:Spacebars.call("rwstatsMode"),value:Spacebars.call("count"),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("radio"))}),"\n","Count")),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("rwstatsCountModeValue"),value:Spacebars.call(e.lookup("rwstatsCountModeValue")),enabled:Spacebars.call(e.lookup("rwstatsCountModeValueIsEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("input"))})))),"\n",HTML.DIV({"class":"col-xs-2"},HTML.DIV({"class":"form-group"},HTML.DIV({"class":"input-group"},HTML.SPAN({"class":["input-group-addon"," ","equisize-input-group-addon"]},HTML.LABEL(Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),object:Spacebars.call(e.lookup(".")),property:Spacebars.call("rwstatsMode"),value:Spacebars.call("threshold"),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("radio"))}),"\n","Threshold")),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("rwstatsThresholdModeValue"),value:Spacebars.call(e.lookup("rwstatsThresholdModeValue")),enabled:Spacebars.call(e.lookup("rwstatsThresholdModeValueIsEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("input"))})))),"\n",HTML.DIV({"class":"col-xs-2"},HTML.DIV({"class":"form-group"},HTML.DIV({"class":"input-group"},HTML.SPAN({"class":["input-group-addon"," ","equisize-input-group-addon"]},HTML.LABEL(Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),object:Spacebars.call(e.lookup(".")),property:Spacebars.call("rwstatsMode"),value:Spacebars.call("percentage"),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("radio"))}),"\n","Percentage")),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("rwstatsPercentageModeValue"),value:Spacebars.call(e.lookup("rwstatsPercentageModeValue")),enabled:Spacebars.call(e.lookup("rwstatsPercentageModeValueIsEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("input"))})))),"\n",HTML.DIV({"class":["col-xs-2"," ","col-xs-offset-2"," ","equisize-input-group-addon"]},HTML.DIV({"class":"input-group"},HTML.SPAN({"class":"input-group-addon"},HTML.LABEL(Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("rwstatsBinTimeEnabled"),value:Spacebars.call(e.lookup("rwstatsBinTimeEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("checkbox"))}),"\n","Bin time")),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("rwstatsBinTime"),value:Spacebars.call(e.lookup("rwstatsBinTime")),placeholder:Spacebars.call("60"),enabled:Spacebars.call(e.lookup("rwstatsBinTimeEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("input"))}))))),HTML.FIELDSET({"class":"display-fields-block"},HTML.LEGEND("Stats fields","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"rwstats fields","data-content":"To compute a Top-N or Bottom-N list, the key field(s) must be specified. These are the flow attributes (a.k.a. fields or columns) that make up the key into which flows are binned and statistics are computed from. Bin-time is unique for when time FIELDS are used, to determine the time bin top/bottom-n statistics."})),"\n",HTML.DIV({"class":"row"},HTML.DIV({"class":"col-xs-12"},Blaze.Each(function(){return Spacebars.call(e.lookup("rwstatsFieldsOrder"))},function(){return HTML.DIV({"class":"checkbox"},HTML.LABEL({"data-toggle":"popover",title:function(){return Spacebars.mustache(e.lookup("t"),e.lookup("fieldI18nString"))},"data-content":function(){return Spacebars.mustache(e.lookup("t"),e.lookup("fieldDefinitions"))}},HTML.INPUT({"class":"field-checkbox",type:"checkbox",checked:function(){return Spacebars.mustache(e.lookup("fieldIsSelected"),e.lookup(".."),"rwstatsFields")},value:function(){return Spacebars.mustache(e.lookup("."))},"data-property":"rwstatsFields"}),"\n",Blaze.View(function(){return Spacebars.mustache(e.lookup("t"),e.lookup("fieldI18nString"))})))})))),HTML.FIELDSET({"class":"display-fields-block"},HTML.LEGEND("Stats values","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"rwstats values","data-content":'These options determine how the statistics are calculated (such as if you are looking for top 10 dip by BYTES for example). When computing a Top-N or Bottom-N, all flows that have the same key field(s) will be binned together. For each bin, one or more aggregate values are computed as specified by VALUES, a comma separated list of names. VALUES that are not Records, Packets, or Bytes are instead "distinct" grouping values (such as how many "distinct-dcc" did a user talk to).'})),"\n",HTML.DIV({"class":"row"},HTML.DIV({"class":"col-xs-12"},Blaze.Each(function(){return Spacebars.call(e.lookup("rwstatsValuesOrder"))},function(){return HTML.DIV({"class":"checkbox"},HTML.LABEL({"data-toggle":"popover",title:function(){return Spacebars.mustache(e.lookup("t"),e.lookup("fieldI18nString"))},"data-content":function(){return Spacebars.mustache(e.lookup("t"),e.lookup("fieldDefinitions"))}},HTML.INPUT({"class":"field-checkbox",type:"checkbox",checked:function(){return Spacebars.mustache(e.lookup("fieldIsSelected"),e.lookup(".."),"rwstatsValues")},value:function(){return Spacebars.mustache(e.lookup("."))},"data-property":"rwstatsValues"}),"\n",Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),e.lookup("."),"in",Spacebars.dot(e.lookup("share"),"rwstatsValues"))},function(){return HTML.STRONG(Blaze.View(function(){return Spacebars.mustache(e.lookup("t"),e.lookup("fieldI18nString"))}))},function(){return Blaze.View(function(){return Spacebars.mustache(e.lookup("t"),e.lookup("fieldI18nString"))})})))}))),"\n",HTML.DIV({"class":"row"},HTML.DIV({"class":"col-xs-4"},HTML.DIV({"class":"form-group"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("rwstatsPrimaryValue"),value:Spacebars.call(e.lookup("rwstatsPrimaryValue")),options:Spacebars.call(e.lookup("rwstatsPrimaryValueOptions")),placeholder:Spacebars.call("Primary stats value"),withEmptyOption:Spacebars.call(!0),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("chosen"))})))))]}),Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),e.lookup("output"),"is","rwcount")},function(){return HTML.FIELDSET({"class":"rwcount-parameters"},HTML.LEGEND("Count parameters"),"\n",HTML.DIV({"class":"row"},HTML.DIV({"class":"col-xs-5"},HTML.DIV({"class":"form-group"},HTML.LABEL({"class":"control-label"},"Bin size","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"bin size","data-content":"Denote the size of each time bin, in seconds; defaults to 30 seconds."})),"\n",HTML.DIV({"class":"input-group"},HTML.SPAN({"class":"input-group-addon"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("rwcountBinSizeEnabled"),value:Spacebars.call(e.lookup("rwcountBinSizeEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("checkbox"))})),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("rwcountBinSize"),value:Spacebars.call(e.lookup("rwcountBinSize")),enabled:Spacebars.call(e.lookup("rwcountBinSizeEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("input"))}),"\n",HTML.SPAN({"class":"input-group-addon"},"seconds")))),"\n",HTML.DIV({"class":"col-xs-5"},HTML.DIV({"class":"form-group"},HTML.LABEL({"class":"control-label"},"Load scheme","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"load scheme","data-content":"Specify how a flow record that spans multiple bins allocates its bytes and packets among the bins. The default scheme is time-proportional."})),"\n",HTML.DIV({"class":"input-group"},HTML.SPAN({"class":"input-group-addon"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("rwcountLoadSchemeEnabled"),value:Spacebars.call(e.lookup("rwcountLoadSchemeEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("checkbox"))})),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("rwcountLoadScheme"),value:Spacebars.call(e.lookup("rwcountLoadScheme")),options:Spacebars.call(e.lookup("rwcountLoadSchemeOptions")),enabled:Spacebars.call(e.lookup("rwcountLoadSchemeEnabled")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("chosen"))})))),"\n",HTML.DIV({"class":"col-xs-2"},HTML.DIV({"class":"form-group"},HTML.LABEL({"class":"control-label"},"Skip zeroes"),"\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"skip zeroes","data-content":"Disable printing of bins with no traffic. By default, all bins are printed."}),"\n",HTML.DIV({"class":["input-group"," ","fake-input-group"]},HTML.SPAN({"class":"input-group-addon"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("rwcountSkipZeroes"),value:Spacebars.call(e.lookup("rwcountSkipZeroes")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("checkbox"))})),"\n",HTML.DIV({"class":"fake-input"}))))))}),Blaze.If(function(){return Spacebars.call(Spacebars.dot(e.lookup("availableChartTypes"),"length"))},function(){return Spacebars.include(e.lookupTemplate("presentationFieldset"))}),HTML.FIELDSET(HTML.Raw("Final query"),"\n",HTML.DIV({"class":"row"},HTML.DIV({"class":"col-xs-12"},Blaze.If(function(){return Spacebars.dataMustache(e.lookup("inputCommand"),e.lookup("currentConfig"),Spacebars.dot(e.lookup("currentUser"),"profile"),!0)},function(){return[HTML.CODE({"class":"query-display"},"$ ",Blaze.View(function(){return Spacebars.mustache(e.lookup("inputCommand"),e.lookup("currentConfig"),Spacebars.dot(e.lookup("currentUser"),"profile"),!0)})),HTML.CODE({"class":"query-display"},"$ ",Blaze.View(function(){return Spacebars.mustache(e.lookup("outputCommand"),e.lookup("currentConfig"),Spacebars.dot(e.lookup("currentUser"),"profile"),!0)}))]},function(){return HTML.CODE({"class":"query-display"},HTML.EM("Please set some options to build the query"))}))))]})}(); !function(){Template.__checkName("rwcountCmd"),Template.rwcountCmd=new Template("Template.rwcountCmd",function(){var a=this;return HTML.DIV({"class":"input-group"},HTML.Raw('
    rwcount
    \n'),Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(a.lookup("_id")),property:Spacebars.call("rwcountCmd"),value:Spacebars.call(a.lookup("rwcountCmd")),isNew:Spacebars.call(a.lookup("isNew"))}},function(){return Spacebars.include(a.lookupTemplate("input"))}))})}(); @@ -226,7 +226,7 @@ Router=Package["iron:router"].Router,RouteController=Package["iron:router"].Rout !function(){Template.__checkName("footer"),Template.footer=new Template("Template.footer",function(){var e=this;return HTML.FOOTER({"class":"footer"},HTML.DIV({"class":"container"},HTML.DIV({"class":"row"},HTML.DIV({"class":["col-xs-6"," ","col-xs-offset-3"]},HTML.H6({"class":"text-center"},Blaze.View(function(){return Spacebars.mustache(e.lookup("version"))}))))))})}(); -!function(){Template.__checkName("help"),Template.help=new Template("Template.help",function(){var e=this;return HTML.Raw('

    Help

    \n
    Documentation will be here soon.
    ')})}(); +!function(){Template.__checkName("help"),Template.help=new Template("Template.help",function(){var e=this;return HTML.DIV({"class":["container-fluid"," ","config"]},HTML.DIV({"class":"row"},HTML.DIV({"class":"col-xs-12"},HTML.DIV({"class":"panel"},HTML.DIV({"class":"panel-body"},HTML.HEAD(HTML.Raw(''),"\n",HTML.TITLE("Untitled Document.md"),"\n",HTML.STYLE()),"\n",HTML.Raw('

    \nFlowBAT Help

    \n
    \n

    FlowBAT\n is a graphical flow-based analysis tool. Utilizing the power and versatility of network flow records,\nFlowBAT\n can help provide visibility for network administrators and network security practitioners.

    \n

    Whether you are a seasoned pro at using flow data or brand new to it, FlowBAT provides a user experience that should make it easy to rapidly track connections in to and out of your network. This includes

    \n\n

    \nTable of Contents

    \n
    \n

    FlowBAT\nTech\nCount\nTech\nInstallation\nInitial Configuration

    \n

    - SiLK Site Configuration File\n- SiLK Root Directory\n- Temporary Storage Directory

    \n

    Basic Usage and Best Practices

    \n

    - Filters\n- Exclusions\n- Stats\n- Count\n- IP Sets\n- Tuple Files\n- PCAP Analysis\n- RWF Analysis

    \n

    Layout

    \n

    - Dashboard\n- Quick Query\n- Saved Queries\n- IP Sets\n- Tuple Files\n- Night Mode\n- Configuration Settings\n- User Administration\n- SiLK Server Administration\n- Help

    \n

    QueryExamples\nAdditional Notes

    \n

    - Standards\n- HTTPS

    \n

    Support\nLicense

    \n

    \nTech

    \n
    \n

    FlowBAT\n is written in Node.js using the Meteor framework. It is designed to work along side an existing\nSiLK\n-based NetFlow system, or to be installed in conjunction with one.\nFlowBAT\n was written with ease of installation and deployment in mind.

    \n

    \nInstallation

    \n
    \n

    If you’re reading this, you probably already succeeded at installing\nFlowBAT\n. However, if you are perhaps not the installer and are looking to check out what went into getting this running, check out the\ninstallation\n documentation. It was probably just two scripts and maybe some manually configuration editing of sensor.conf and silk.conf.

    \n

    \nInitial Configuration

    \n
    \n

    \nSiLK Site Configuration File

    \n

    This is the main configuration file that SiLK uses to interpret your sensor deployment. If you’ve installed using the scripts provided at\nFlowBAT\n.com then it is /data/silk.conf

    \n

    \nSiLK Root Directory

    \n

    This is the directory where you are storing flow data on the SiLK server. If you’ve installed using the scripts provided at\nFlowBAT\n.com then it is /data/

    \n

    \nTemporary Storage Directory

    \n

    This is where temporary files, sets, rwf files, and generally anything else that FlowBAT needs to make and use later will be stored. It is easy to want to use /tmp/ as the directory but due to how the filesystem cleans it up regularly, it is not recommended. Instead, create a directory that you can manually control if needed.

    \n

    \nBasic Usage and Best Practices

    \n
    \n

    FlowBAT\n can be used to search for flows, perform stats against user defined bins of flow data, or it can be used to count flows of a certain type and put them in timebased bins for a time based analysis. The record results are presented as a customizable table where columns can be moved around via mouse, and fields can be removed using selection boxes below the table. Single clicking a column will all data on the table in an ascending or descending order based on the column clicked. Every value in the table has a pivot capability when clicked. For instance, timestamps can be used to further customize the filter by adding a “Before/After 1 minute” to the filter simply by clicking and pivoting off of the user selected time in the table. IP addresses have lookup features in Robtex. More sources are being added via updates.\nStats\n and\nCount\n output types can be presented as either a table or a chart.\nStats\n is based on\nrwstats\n and the tables have limited pivoting available for\nStats Fields\n.\nCount\n is based on\nrwcount\n and has static table output as well as line chart output. For more details on\nStats\n and\nCount\n usage, see below.

    \n

    \nFilters

    \n

    The most common usage of FlowBAT will be to use filters to search for specific flows from a SiLK datastore. The syntax for a query is implicitly “AND”, meaning that every record in a result will be a match of the combined result of all user provided options in the query. The goal is always to narrow down to smaller results via\nfilters\n, and then you can do more specific carving using\nexclusions\n. Lets say that you are looking for traffic where either address is 192.168.1.15. Your filter will be as simple as:

    \n
    --any-address=192.168.1.15 --type=all
    \n

    The\nany-address\n option says to look for 192.168.1.15 in source or destination IP address fields. The\ntype\n option is an input option that states that we want to look in all forms of traffic whether it is inbound, outbound, or internal to internal traffic. In this case the\ntype\n is redundant though due to liberties taken in FlowBAT to meet more common user use cases. We default to “all” for the\ntype\n field. See “Other Notes” at the end of this documentation for more detail.

    \n

    \nExclusions

    \n

    Exclusions\n are used to narrow a filter’s results. Think of exclusions as doing an equal and opposite feature of filtering. Assume that you have a fair amount of SSH traffic and Google Hangouts traffic that is overwhelming a specific search. Hypothetically the following exclusion would remove records from the results that have [a source IP address of 192.168.1.15 and a source address of port 22] OR [UDP records with some local source IP addresses that looks like Google Hangouts traffic on ports 19302 through 19309]. You could write an exclusion as such:

    \n
    --saddress=192.168.1.15 --sport=22 OR --protocol=17 --scidr=192.168.0.0/16 --dcidr=173.194.0.0/16,74.125.0.0/16 --aport=19302-19309
    \n

    If you’re wanting to look for large groupings of IP addresses, you’ll want to generate IP sets. Please refer to the “IP Sets” section for more information. When filters alone won’t accomplish some goals of pulling very specific 5-tuple combinations, we allow the creation of 5-tuple files for use in the query builder. See “Tuple Files” for more information.

    \n

    \nStats

    \n

    Stats\n is based on\nrwstats\n and is used to calculate top-n/bottom-n lists based on user definied fields and stat values.\nStats\n is best explained via examples and the best practice is usually to try to put into words what you are looking for first. For instance, you are looking for the [top 10 sIP-dIP pairs by bytes]. In this case you would specify “Top”, “Count=10”, select Source IP and Dest IP as fields, and select “Bytes” as the\nStats Value\n. Multiple\nStats Values\n can be selected as long as the value does not match the field being searched for. In the event that you are pulling muliple stat values, you’ll want to select the *Primary Stats Value" that is most important to you. The other fields will be supplementary information, but will not be the main values being used to calculate against.

    \n

    Table output allows for pivoting on certain\nstats fields\n but not on\nstats values\n. You can select between bar, column, and pie charts for the chart display. The chart uses a logarithmic scale due to the widely varying values when using multiple\nstats values

    \n

    \nCount

    \n

    Count\n is based on\nrwcount\n and is used to summarize flow records over time, grouping record, byte, and packet counts into time bins of a user defined duration. Each row in the table output each data point on the line chart output represents one bin. If the user uses a 60 second bin size (the default is 30 seconds) this means that the total number of records/minute, bytes/minute, and packets/minute. Special considerations need to be taken when making charts with rwcount. If the time range specified is incredible long and the bin size is unreasonably small for that range, the chart will take a long time to create and it will be illegible if it actually appears. This is because you are loading the entire dataset onto one chart.

    \n

    \nIP Sets

    \n

    IP Sets\n are user defined lists of IP addresses that can be edited in the “IP Sets” tab in the navbar at the top of the screen. There you will create an IP set that can be IP addresses, CIDR ranges, or combinations of the two. Saving the results will allow you to specify those sets in the query builder under the “host” subheading. As before, selecting\nany IP set\n will add the\nanyset\n option to the query. That option looks for any match from the sets, regardless if they occur as the source or destination IP address.

    \n

    \nTuple Files

    \n

    Tuple Files\n allow you to specify up to an entire 5-tuple to search for, and by default it will search in any direction. This means that if you choose to only look for communications between two addresses, you can specify them in the file as something like “192.168.1.15,8.8.8.8”. You can save as many tuples as you would like in the file (just as you did in IP Sets), but specifying the options in the query builder is slightly more complex to give you more power in filtering. Under the “additional options” subheading in the query builder you’ll find Tuple File, Tuple Direction, Tuple Delimiter, and Tuple Fields. After selecting the tuple file that you’ve created, the tuple direction refers to what order you wish to search in. Selecting “both” will search for any occurence of the tuple elements regardless of where they appear in the individual record. This is the most common use case as it accomplishes a task that isn’t easily specified in default options. After specifying direction, you need to tell FlowBAT how the tuple file is formatted. Provide the delimiter that you chose (in this example we are using a comma\n,\n), and tell FlowBAT what the elements are in the tuple. In this case, we can say\nsip,dip\n. If we’ve chosen the tuple direction to be both, this really just implies that both of the values are IP addresses. Had we chosen otherwise, the sip,dip would have more meaning. Also, had we provided the full 5-tuple we might have used\nsip,dip,sport,dport,protocol\n to define the tuple fields.

    \n

    \nPCAP Analysis

    \n

    PCAP analysis can be performed in FlowBAT by specifying the full path of the file at either the command line FlowBAT interface or the "Additional Options" tab. See the examples at the end of this documentation for more details.

    \n
    /home/jason/badguys.pcap --saddress=192.168.1.15 --aport=31337
    \n

    \nRWF Analysis

    \n

    RWF files are the binary files that SiLK tools operate on. These can also be created at the command line in cases where automation might be desired. If you need to review an rwf file in FlowBAT, simply specify it prior to the rest of the filter.

    \n
    /home/jason/IOT.rwf --type=out,outweb --packets=4- --ack-flag=1
    \n

    \nLayout

    \n
    \n

    FlowBAT\n was created to be a more user-friendly frontend for the SiLK flow analysis tool suite. Seasoned professionals will notice that many tools are not immediately available to use, but instead have been packaged together in an effort to meet the most common SiLK analysis use-cases.\nFlowBAT\n allows the user to search and filter for flow data as well as run statistics based on the outputs. The main FlowBAT Interface is divided into six main sections:

    \n\n

    \nDashboard

    \n

    If this is your first time booting up\nFlowBAT\n you might notice that the dashboard is a plain canvas. This is a place to put the output of saved queries. Those outputs might be bandwidth graphs or tables of records with interactions with malicious IP sets, or generally just anything you want. In order to make them actionable in a dashboard, you’ll want to make sure that the outputs are updated, so make sure that the intended queries have rolling times and periodic execution. At the top of the Dashboard is a quick query command interface input. This input allows for running a search spontaneously without navigating manually to other tabs. For the query builder, you will need to go to\nquick query\n or\nsaved queries\n.

    \n

    \nQuick Query

    \n

    Running a quick query is useful when you are just doing some regular hunting or providing situational awareness upon request. If it is something that you don’t think that you will keep, then quick query is the place to go. However, in the event that you just love something you’ve found, you can go ahead and make it a saved query on the fly from the quick query page. In the event that you cannot filter exactly how you want, or perhaps there is an outlier that you also want removed, you can also provide “exclusions” which will remove data from your results. See “Basic Usage and Best Practices”. There is also a query builder that provides individual descriptions and input fields for those not verse in SiLK syntax already. Each input contains a help bubble that can assist in understanding what fields mean. Upon adding fields in the query builder, the full SiLK query itself (in red) is populated below the input parameters. New users can take note of the syntax to ween themselves off of the query builder and opt to make use of quick query for a more streamlined experience.

    \n

    \nSaved Queries

    \n

    The\nSaved Queries\n tab shows all queries that you have saved. This tab also provides the actual SiLK queries needed to replicate from the command line on the server itself (useful for those wanting to learn SiLK syntax and run automated tasks against flow data). Query names in this list are referenced when selecting outputs to display on the dashboard.

    \n

    \nIP Sets

    \n

    Here you can create an IP set that can be IP addresses, CIDR ranges, or combinations of the two. Saving the results will allow you to specify those sets in the query builder under the “host” subheading. When creating IP sets it is recommended that you leave a note descibing the set and have a unique IP set name. The name will be referenced in the query builder. See “Basic Usage and Best Practices” for more details.

    \n

    \nTuple Files

    \n

    Here you can create a tuple file (see “Basic Usage and Best Practices” for more details on these unique files). Saving the results will allow you to specify those tuples in the query builder under the “Additional options” subheading. When creating tuple files it is recommended that you leave a note descibing the file and have a unique name. The name will be referenced in the query builder. See “Basic Usage and Best Practices” for more details.

    \n

    \nNight Mode

    \n

    Night Mode changes the visual theme of FlowBAT to make it easier on the eyes in darker environments. Simple click the sun/moon symbol to toggle. Night Mode is only available on webkit enabled browsers (Chrome, Safari, Opera).

    \n

    \nConfiguration Settings

    \n

    These are options available to all users.

    \n
    \n- User Administration
    \n

    Add, remove, or edit users.

    \n
    \n- SiLK Server Administration
    \n

    Change initial FlowBAT configuration options such as silk.conf location, data directory, temporary storage directory, and SSH options. See “Initial Configuration” for more details.

    \n
    \n- Help
    \n

    You are here.

    \n

    \nQuery Examples

    \n
    \n

    Search for all records with IP address 192.168.1.15 as either source IP or dest IP

    \n
    Filter: --any-address=192.168.1.15
    \n

    Search for 192.168.1.15 but only show outbound flows

    \n
    Filter: --any-address=192.168.1.15 --type=out,outweb
    \n

    Look at the top 10 source-dest ip pairs with stats by bytes

    \n
    Filter: --protocol=0-255\nStats: --top --count=10 --fields=sip,dip --values=bytes
    \n

    Look at the top 10 list of destination country codes for outbound traffic by packets, excluding the United States, Great Britain, and private IP space

    \n
    Filter: --protocol=0-255 --type=out,outweb\nExclusion: --dcc=US,GB,--\nStats: --top --count=10 --fields=dcc --values=packets
    \n

    Examine a pre-made RWF file of IoT traffic to determine how much outbound data is traversing the network.

    \n
    Filter: /home/jason/IOT.rwf --type=out,outweb --packets=4- --ack-flag=1\nCount: --bin-size=60
    \n

    Examine a PCAP file to generate a list of the top talking sip-dip pairs by bytes.

    \n
    Filter: /home/jason/badguys.pcap --protocol=0-255\nStats --top --count=10 --fields=sip,dip --values=bytes
    \n

    \nAdditional Notes

    \n
    \n

    \nStandards

    \n

    FlowBAT\n makes every attempt at keeping most of the standards set by\nSiLK\n and only deviates when it is in the analysts best interest. The most significant change is regarding the\ntype\n default values when creating a filter. If you’re a veteran of SiLK you’ll probably know that SiLK defaults to incoming traffic as per the\nrwfilter\n documentation:

    \n

    The default-type list is determined by the value of CLASS, and the default types generally include only incoming traffic.

    \n

    In our experience analysts generally intend to start searching by looking through all flows collected and as such\nwe have made “all” the default value for\ntype\n.

    \n

    \nHTTPS

    \n

    We have also provided a script in the support folder of the project that allows the user to quickly set up an nginx proxy for https access. This script is only meant to ensure that connections made to FlowBAT are encrypted, but as with any security measures, you should customize the proxy configuration to your own liking if you desire any more than what is described here.

    \n

    \nSupport

    \n
    \n

    Don’t hesitate to email\nsupport\n if you have any questions or feature requests about\nFlowBAT\n. You can also submit\nissues\n if you feel inclined to submit bugs or requests via github.

    \n

    For more information on\nSiLK\n please see the [SiLK documentation] and for tool specific documentation, see the following

    \n\n

    \nLicense

    \n

    Refer to the\nlicense\n on the project page.

    '))))))})}(); !function(){Template.__checkName("ipset"),Template.ipset=new Template("Template.ipset",function(){var e=this;return HTML.DIV({"class":["container-fluid"," ","ipset-default"," ","ipset"]},HTML.DIV({"class":"row"},HTML.DIV({"class":"col-xs-12"},Spacebars.With(function(){return Spacebars.call(e.lookup("ipset"))},function(){return HTML.FORM({"class":["panel"," ","panel-default"]},HTML.DIV({"class":"panel-heading"},HTML.DIV({"class":"form-group"},HTML.LABEL("IP Set Name","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"IP Set name","data-content":"This is the name that will be referenced in the query builder."})),"\n",HTML.DIV({"class":"input-group"},Blaze._TemplateWith(function(){return{family:Spacebars.call("ipset"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("name"),value:Spacebars.call(e.lookup("name")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("input"))}),"\n",HTML.DIV({"class":"input-group-btn"},HTML.BUTTON({"class":["btn"," ","btn-default"," ","dropdown-toggle"],"data-toggle":"dropdown",type:"button"},HTML.SPAN({"class":"caret"})),"\n",HTML.UL({"class":["dropdown-menu"," ","pull-right"]},HTML.LI(HTML.A({"class":"confirm",href:function(){return["/ipset/",Spacebars.mustache(e.lookup("_id")),"/remove"]},"data-confirmation":"Are you sure you want to delete this IP Set?"},HTML.I({"class":["fa"," ","fa-trash-o"]}),"\n","Delete this IP Set"))))))),"\n",HTML.DIV({"class":"panel-body"},HTML.DIV({"class":"form-group"},HTML.LABEL("Note","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"Note","data-content":"These notes are for personal use and can be quickly referenced when examining the list in the IP Sets tab in the navbar."})),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("ipset"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("note"),value:Spacebars.call(e.lookup("note")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("textarea"))})),"\n",HTML.DIV({"class":"form-group"},HTML.LABEL("IP Addresses","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"IP addresses","data-content":"List of IP addresses or CIDR ranges. When sets are specified in the query builder (via Source IP Set, Destination IP Set, or Any IP Set), records that contain matching IP addresses will be displayed."})),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("ipset"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("contents"),value:Spacebars.call(e.lookup("contents")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("textarea"))})),"\n",HTML.DIV({"class":"form-group"},HTML.BUTTON({"class":["btn"," ","btn-primary"],type:"submit"},"Save"),"\n",HTML.SPAN({"class":["save-notice"," ","notice"," ","text-success"]},"Successfully saved"),"\n",HTML.SPAN({"class":["create-notice"," ","notice"," ","text-success"]},"Successfully created")),"\n",Blaze.If(function(){return Spacebars.call(Spacebars.dot(e.lookup("queries"),"count"))},function(){return[HTML.HR(),HTML.H4("Queries using this IP Set"),HTML.UL(Blaze.Each(function(){return Spacebars.call(e.lookup("queries"))},function(){return HTML.LI(HTML.A({href:function(){return Spacebars.mustache(e.lookup("path"))}},Blaze.View(function(){return Spacebars.mustache(e.lookup("displayName"))})))}))]})))}))))})}(); @@ -236,13 +236,13 @@ Router=Package["iron:router"].Router,RouteController=Package["iron:router"].Rout !function(){Template.__checkName("login"),Template.login=new Template("Template.login",function(){var n=this;return[HTML.LI({"class":"dropdown"},HTML.Raw('Sign in\n'),"\n",HTML.UL({"class":"dropdown-menu"},HTML.LI(HTML.DIV({"class":"signin"},HTML.BUTTON({"class":["btn"," ","btn-primary"," ","sign-in-with-google"]},Blaze.If(function(){return Spacebars.call(n.lookup("loggingIn"))},function(){return"Signing in..."},function(){return"Sign in with Google"})),"\n",HTML.Raw("

    or

    "),"\n",HTML.FORM({autocomplete:"off"},HTML.Raw('
    '),"\n",HTML.Raw('
    '),"\n",HTML.DIV({"class":["links"," ","clearfix"]},HTML.BUTTON({"class":["btn"," ","btn-default"],type:"submit"},Blaze.If(function(){return Spacebars.call(n.lookup("loggingIn"))},function(){return"Signing in..."},function(){return"Sign in"})),"\n",HTML.A({"class":["forgot-password"," ","pull-right"],href:"#"},Blaze.View(function(){return Spacebars.mustache(n.lookup("t"),"forms.login.passwordForgot.link")})))))))),HTML.LI({"class":"dropdown"},HTML.Raw('Sign up\n'),"\n",HTML.UL({"class":"dropdown-menu"},HTML.LI(HTML.DIV({"class":"signup"},HTML.BUTTON({"class":["btn"," ","btn-primary"," ","sign-in-with-google"]},Blaze.If(function(){return Spacebars.call(n.lookup("loggingIn"))},function(){return"Signing in..."},function(){return"Sign up with Google"})),"\n",HTML.Raw("

    or

    "),"\n",HTML.FORM({autocomplete:"off"},HTML.Raw('
    '),"\n",HTML.Raw('
    '),"\n",HTML.Raw('
    '),"\n",HTML.DIV({"class":["links"," ","clearfix"]},HTML.BUTTON({"class":["btn"," ","btn-default"," ","pull-left"],type:"submit"},Blaze.If(function(){return Spacebars.call(n.lookup("loggingIn"))},function(){return"Signing up..."},function(){return"Sign up"}))))))))]})}(); -!function(){Template.__checkName("navbar"),Template.navbar=new Template("Template.navbar",function(){var a=this;return HTML.NAV({"class":["navbar"," ","navbar-default"," ","navbar-static-top"," ","navbar-main"],role:"navigation"},HTML.DIV({"class":"container-fluid"},HTML.Raw(''),"\n",HTML.DIV({id:"top-navbar-collapse","class":["collapse"," ","navbar-collapse"]},HTML.UL({"class":["nav"," ","navbar-nav"]},Blaze.If(function(){return Spacebars.call(a.lookup("currentUser"))},function(){return[HTML.LI({"class":function(){return Blaze.If(function(){return Spacebars.dataMustache(a.lookup("condition"),a.lookup("currentTemplateName"),"is","dashboard")},function(){return"active"})}},HTML.A({href:"/"},"Dashboard")),HTML.LI({"class":function(){return Blaze.If(function(){return Spacebars.dataMustache(a.lookup("condition"),a.lookup("currentTemplateName"),"in","query")},function(){return Blaze.If(function(){return Spacebars.call(Spacebars.dot(a.lookup("queryObject"),"isQuick"))},function(){return"active"})})}},HTML.A({href:"/query/create/quick"},"Quick Query")),HTML.LI({"class":function(){return Blaze.If(function(){return Spacebars.dataMustache(a.lookup("condition"),a.lookup("currentTemplateName"),"in","queryList","query")},function(){return Blaze.If(function(){return Spacebars.dataMustache(a.lookup("not"),Spacebars.dot(a.lookup("queryObject"),"isQuick"))},function(){return"active"})})}},HTML.A({href:"/query/list"},"Saved Queries")),HTML.LI({"class":function(){return Blaze.If(function(){return Spacebars.dataMustache(a.lookup("condition"),a.lookup("currentTemplateName"),"in","ipsetList","ipset","ipsetCreate")},function(){return"active"})}},HTML.A({href:"/ipset/list"},"IP Sets")),HTML.LI({"class":function(){return Blaze.If(function(){return Spacebars.dataMustache(a.lookup("condition"),a.lookup("currentTemplateName"),"in","tupleList","tuple","tupleCreate")},function(){return"active"})}},HTML.A({href:"/tuple/list"},"Tuple Files"))]})),"\n",HTML.UL({"class":["nav"," ","navbar-nav"," ","navbar-right"]},Blaze.If(function(){return Spacebars.call(a.lookup("currentUser"))},function(){return HTML.LI({"class":"dropdown"},HTML.A({"class":"dropdown-toggle",href:"#","data-toggle":"dropdown"},Blaze.View(function(){return Spacebars.mustache(Spacebars.dot(a.lookup("currentUser"),"profile","name"))}),"\n",HTML.B({"class":"caret"})),"\n",HTML.UL({"class":"dropdown-menu"},HTML.Comment('li: a(href="/user/{{currentUser._id}}") Profile'),"\n",Blaze.If(function(){return Spacebars.dataMustache(a.lookup("currentUserHasRole"),"admin")},function(){return[HTML.LI(HTML.A({href:"/users"},"User administration")),HTML.LI(HTML.A({href:"/config"},"SiLK server configuration"))]},function(){return HTML.LI(HTML.A({href:"/profile"},"Profile"))}),"\n",HTML.LI(HTML.A({href:"/help"},"Help")),"\n",HTML.LI({"class":"divider"}),"\n",HTML.LI(HTML.A({"class":"logout",href:"#"},"Logout"))))},function(){return Spacebars.include(a.lookupTemplate("login"))})))))})}(); +!function(){Template.__checkName("navbar"),Template.navbar=new Template("Template.navbar",function(){var e=this;return HTML.NAV({"class":["navbar"," ","navbar-default"," ","navbar-static-top"," ","navbar-main"],role:"navigation"},HTML.DIV({"class":"container-fluid"},HTML.Raw(''),"\n",HTML.DIV({id:"top-navbar-collapse","class":["collapse"," ","navbar-collapse"]},HTML.UL({"class":["nav"," ","navbar-nav"]},Blaze.If(function(){return Spacebars.call(e.lookup("currentUser"))},function(){return[HTML.LI({"class":function(){return Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),e.lookup("currentTemplateName"),"is","dashboard")},function(){return"active"})}},HTML.A({href:"/"},"Dashboard")),HTML.LI({"class":function(){return Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),e.lookup("currentTemplateName"),"in","query")},function(){return Blaze.If(function(){return Spacebars.call(Spacebars.dot(e.lookup("queryObject"),"isQuick"))},function(){return"active"})})}},HTML.A({href:"/query/create/quick"},"Quick Query")),HTML.LI({"class":function(){return Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),e.lookup("currentTemplateName"),"in","queryList","query")},function(){return Blaze.If(function(){return Spacebars.dataMustache(e.lookup("not"),Spacebars.dot(e.lookup("queryObject"),"isQuick"))},function(){return"active"})})}},HTML.A({href:"/query/list"},"Saved Queries")),HTML.LI({"class":function(){return Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),e.lookup("currentTemplateName"),"in","ipsetList","ipset","ipsetCreate")},function(){return"active"})}},HTML.A({href:"/ipset/list"},"IP Sets")),HTML.LI({"class":function(){return Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),e.lookup("currentTemplateName"),"in","tupleList","tuple","tupleCreate")},function(){return"active"})}},HTML.A({href:"/tuple/list"},"Tuple Files"))]})),"\n",HTML.UL({"class":["nav"," ","navbar-nav"," ","navbar-right"]},Blaze.If(function(){return Spacebars.call(e.lookup("currentUser"))},function(){return HTML.LI({"class":"dropdown"},HTML.A({"class":"dropdown-toggle",href:"#","data-toggle":"dropdown"},Blaze.View(function(){return Spacebars.mustache(Spacebars.dot(e.lookup("currentUser"),"profile","name"))}),"\n",HTML.B({"class":"caret"})),"\n",HTML.UL({"class":"dropdown-menu"},HTML.Comment('li: a(href="/user/{{currentUser._id}}") Profile'),"\n",Blaze.If(function(){return Spacebars.dataMustache(e.lookup("currentUserHasRole"),"admin")},function(){return[HTML.LI(HTML.A({href:"/users"},"User administration")),HTML.LI(HTML.A({href:"/config"},"SiLK server configuration"))]},function(){return HTML.LI(HTML.A({href:"/profile"},"Profile"))}),"\n",HTML.LI(HTML.A({href:"/help"},"Help")),"\n",HTML.LI({"class":"divider"}),"\n",HTML.LI(HTML.A({"class":"logout",href:"#"},"Logout"))))},function(){return Spacebars.include(e.lookupTemplate("login"))})),"\n",HTML.Raw(""))))})}(); !function(){Template.__checkName("notFound"),Template.notFound=new Template("Template.notFound",function(){var n=this;return HTML.Raw('

    404

    \n

    Page not found

    ')})}(); !function(){Template.__checkName("query"),Template.query=new Template("Template.query",function(){var e=this;return HTML.DIV({"class":["container-fluid"," ","query"]},HTML.DIV({"class":"row"},HTML.DIV({"class":"col-xs-12"},Blaze._TemplateWith(function(){return{_id:Spacebars.call(Spacebars.dot(e.lookup("queryObject"),"_id"))}},function(){return Spacebars.include(e.lookupTemplate("results"))}))))})}(); -!function(){Template.__checkName("results"),Template.results=new Template("Template.results",function(){var e=this;return Spacebars.With(function(){return Spacebars.call(e.lookup("query"))},function(){return HTML.DIV({"class":function(){return["results"," ","panel"," ","panel-default"," ",Blaze.If(function(){return Spacebars.call(Spacebars.dot(e.lookup(".."),"isDashboard"))},function(){return"is-simple"})]}},HTML.DIV({"class":"panel-heading"},HTML.FORM({"class":"options-form"},Blaze.If(function(){return Spacebars.dataMustache(e.lookup("not"),e.lookup("isQuick"))},function(){return Blaze.If(function(){return Spacebars.call(Spacebars.dot(e.lookup(".."),"isDashboard"))},function(){return HTML.H3({"class":"panel-title"},HTML.A({href:function(){return Spacebars.mustache(e.lookup("path"))}},Blaze.View(function(){return Spacebars.mustache(e.lookup("displayName"))})),"\n",HTML.CharRef({html:" ",str:" "}),"\n",HTML.A({"class":"remove-from-dashboard",href:"#",title:"Remove query from dashboard (but keep in system)"},HTML.I({"class":["fa"," ","fa-times"," ","text-muted"]})))},function(){return HTML.DIV({"class":"form-group"},HTML.DIV({"class":"input-group"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("name"),value:Spacebars.call(e.lookup("name")),placeholder:Spacebars.call("Query name"),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("input"))}),"\n",HTML.DIV({"class":"input-group-btn"},HTML.BUTTON({"class":["btn"," ","btn-default"," ","dropdown-toggle"],"data-toggle":"dropdown",type:"button"},HTML.SPAN({"class":"caret"})),"\n",HTML.UL({"class":["dropdown-menu"," ","pull-right"]},HTML.LI(HTML.A({"class":"confirm",href:function(){return["/query/",Spacebars.mustache(e.lookup("_id")),"/remove"]},"data-confirmation":"Are you sure you want to delete this query?"},HTML.I({"class":["fa"," ","fa-trash-o"]}),"\n","Delete this query"))))))})}),"\n",HTML.DIV({"class":["results-buttons"," ","clearfix"]},HTML.DIV({"class":"pull-left"},Spacebars.include(e.lookupTemplate("controlsForTheHeartOfTheSun"))),"\n",HTML.DIV({"class":"pull-right"},HTML.DIV({"class":"btn-group"},HTML.BUTTON({"class":function(){return["toggle-is-utc"," ","btn"," ","btn-default"," ",Blaze.If(function(){return Spacebars.call(Spacebars.dot(e.lookup(".."),"isDashboard"))},function(){return"btn-xs"})]},type:"button"},HTML.I({"class":["fa"," ","fa-fw"," ","fa-clock-o"]}),"\n",Blaze.If(function(){return Spacebars.call(e.lookup("isUTC"))},function(){return"UTC:"},function(){return"Local:"}),"\n",Blaze.View(function(){return Spacebars.mustache(e.lookup("now"))}))))),"\n",Blaze.If(function(){return Spacebars.dataMustache(e.lookup("not"),Spacebars.dot(e.lookup(".."),"isDashboard"))},function(){return Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),e.lookup("interface"),"is","cmd")},function(){return[Spacebars.include(e.lookupTemplate("cmd")),Spacebars.include(e.lookupTemplate("exclusionsCmd")),Spacebars.include(e.lookupTemplate("cmdFieldsets"))]},function(){return[Spacebars.include(e.lookupTemplate("fieldsets")),HTML.DIV({"class":"secondary-controls"},Spacebars.include(e.lookupTemplate("controlsForTheHeartOfTheSun")))]})}))),"\n",Blaze.If(function(){return Spacebars.dataMustache(e.lookup("not"),e.lookup("isOutputStale"))},function(){return Blaze.If(function(){return Spacebars.call(e.lookup("error"))},function(){return HTML.DIV({"class":"panel-body"},HTML.DIV({"class":["alert"," ","alert-danger"],role:"alert"},HTML.STRONG("Oh snap!"),"\n",HTML.PRE(Blaze.View(function(){return Spacebars.mustache(e.lookup("error"))}))))})}),"\n",Blaze.If(function(){return Spacebars.call(e.lookup("result"))},function(){return[Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),e.lookup("presentation"),"is","table")},function(){return HTML.DIV({"class":"results-scroller"},Spacebars.include(e.lookupTemplate("table")))},function(){return Blaze.If(function(){return Spacebars.dataMustache(e.lookup("not"),e.lookup("isOutputStale"))},function(){return Spacebars.include(e.lookupTemplate("chart"))})}),HTML.DIV({"class":"panel-body"},Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),e.lookup("presentation"),"is","table")},function(){return Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),e.lookup("output"),"in","rwcut","rwcount")},function(){return HTML.UL({"class":"pager"},HTML.LI({"class":function(){return["increment-start-rec-num"," ",[Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),e.lookup("startRecNum"),"lte",1)},function(){return"disabled"})," ",Blaze.If(function(){return Spacebars.call(e.lookup("isOutputStale"))},function(){return"disabled"})]]},"data-increment":function(){return["-",Spacebars.mustache(Spacebars.dot(e.lookup("currentUser"),"profile","numRecs"))]}},HTML.A({href:"#"},HTML.I({"class":["fa"," ","fa-angle-left"]}),"\n","Previous")),"\n",HTML.LI({"class":"dropdown"},HTML.SELECT({"class":["num-recs"," ","form-control"]},Blaze.Each(function(){return Spacebars.call(e.lookup("numRecsOptions"))},function(){return HTML.OPTION({value:function(){return Spacebars.mustache(e.lookup("."))},selected:function(){return Spacebars.mustache(e.lookup("condition"),e.lookup("."),"is",Spacebars.dot(e.lookup("currentUser"),"profile","numRecs"))}},Blaze.View(function(){return Spacebars.mustache(e.lookup("."))})," per page")}))),"\n",HTML.LI({"class":function(){return["increment-start-rec-num"," ",[Blaze.If(function(){return Spacebars.dataMustache(e.lookup("not"),Spacebars.dot(e.lookup("rows"),"length"))},function(){return"disabled"})," ",Blaze.If(function(){return Spacebars.call(e.lookup("isOutputStale"))},function(){return"disabled"})]]},"data-increment":function(){return Spacebars.mustache(Spacebars.dot(e.lookup("currentUser"),"profile","numRecs"))}},HTML.A({href:"#"},"Next","\n",HTML.I({"class":["fa"," ","fa-angle-right"]}))))})}),"\n",Blaze.If(function(){return Spacebars.dataMustache(e.lookup("not"),Spacebars.dot(e.lookup(".."),"isDashboard"))},function(){return[Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),e.lookup("presentation"),"is","chart")},function(){return HTML.DIV({"class":["row"," ","form-horizontal"]},HTML.DIV({"class":["col-xs-4"," ","col-xs-offset-4"]},HTML.DIV({"class":"form-group"},HTML.LABEL({"class":["control-label"," ","col-xs-4"]},"Chart height:"),"\n",HTML.DIV({"class":["input-group"," ","col-xs-6"]},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("chartHeight"),value:Spacebars.call(e.lookup("chartHeight")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("input"))}),"\n",HTML.SPAN({"class":"input-group-addon"},"px")))))}),HTML.DIV({"class":"extras"},HTML.A({"class":"download-csv",href:"#"},HTML.I({"class":["normal"," ","fa"," ","fa-file-excel-o"]}),"\n",HTML.I({"class":["loading"," ","fa"," ","fa-spinner"," ","fa-spin"],style:"display: none;"}),"\n","Download full CSV"),"\n",HTML.A({"class":"download-rwf",href:"#"},HTML.I({"class":["normal"," ","fa"," ","fa-file-archive-o"]}),"\n",HTML.I({"class":["loading"," ","fa"," ","fa-spinner"," ","fa-spin"],style:"display: none;"}),"\n","Download full RWF")),Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),e.lookup("output"),"in","rwcut")},function(){return HTML.FORM({"class":"display-fields-block"},HTML.FIELDSET(HTML.LEGEND("Display fields"),"\n",Blaze.Each(function(){return Spacebars.call(e.lookup("fieldsOrder"))},function(){return HTML.DIV({"class":"checkbox"},HTML.LABEL(HTML.INPUT({"class":"field-checkbox",type:"checkbox",checked:function(){return Spacebars.mustache(e.lookup("fieldIsSelected"),e.lookup(".."),"fields")},value:function(){return Spacebars.mustache(e.lookup("."))},"data-property":"fields"}),"\n",Blaze.View(function(){return Spacebars.mustache(e.lookup("t"),e.lookup("fieldI18nString"))})))})))})]}))]}))})})}(); +!function(){Template.__checkName("results"),Template.results=new Template("Template.results",function(){var e=this;return Spacebars.With(function(){return Spacebars.call(e.lookup("query"))},function(){return HTML.DIV({"class":function(){return["results"," ","panel"," ","panel-default"," ",Blaze.If(function(){return Spacebars.call(Spacebars.dot(e.lookup(".."),"isDashboard"))},function(){return"is-simple"})]}},HTML.DIV({"class":"panel-heading"},HTML.FORM({"class":"options-form"},Blaze.If(function(){return Spacebars.dataMustache(e.lookup("not"),e.lookup("isQuick"))},function(){return Blaze.If(function(){return Spacebars.call(Spacebars.dot(e.lookup(".."),"isDashboard"))},function(){return HTML.H3({"class":"panel-title"},HTML.A({href:function(){return Spacebars.mustache(e.lookup("path"))}},Blaze.View(function(){return Spacebars.mustache(e.lookup("displayName"))})),"\n",HTML.CharRef({html:" ",str:" "}),"\n",HTML.A({"class":"remove-from-dashboard",href:"#",title:"Remove query from dashboard (but keep in system)"},HTML.I({"class":["fa"," ","fa-times"," ","text-muted"]})))},function(){return HTML.DIV({"class":"form-group"},HTML.DIV({"class":"input-group"},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("name"),value:Spacebars.call(e.lookup("name")),placeholder:Spacebars.call("Query name"),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("input"))}),"\n",HTML.DIV({"class":"input-group-btn"},HTML.BUTTON({"class":["btn"," ","btn-default"," ","dropdown-toggle"],"data-toggle":"dropdown",type:"button"},HTML.SPAN({"class":"caret"})),"\n",HTML.UL({"class":["dropdown-menu"," ","pull-right"]},HTML.LI(HTML.A({"class":"confirm",href:function(){return["/query/",Spacebars.mustache(e.lookup("_id")),"/remove"]},"data-confirmation":"Are you sure you want to delete this query?"},HTML.I({"class":["fa"," ","fa-trash-o"]}),"\n","Delete this query"))))))})}),"\n",HTML.DIV({"class":["results-buttons"," ","clearfix"]},HTML.DIV({"class":"pull-left"},Spacebars.include(e.lookupTemplate("controlsForTheHeartOfTheSun"))),"\n",HTML.DIV({"class":"pull-right"},HTML.DIV({"class":"btn-group"},HTML.BUTTON({"class":function(){return["toggle-is-utc"," ","btn"," ","btn-default"," ",Blaze.If(function(){return Spacebars.call(Spacebars.dot(e.lookup(".."),"isDashboard"))},function(){return"btn-xs"})]},type:"button"},HTML.I({"class":["fa"," ","fa-fw"," ","fa-clock-o"]}),"\n",Blaze.If(function(){return Spacebars.call(e.lookup("isUTC"))},function(){return"UTC:"},function(){return"Local:"}),"\n",Blaze.View(function(){return Spacebars.mustache(e.lookup("now"))}))))),"\n",Blaze.If(function(){return Spacebars.dataMustache(e.lookup("not"),Spacebars.dot(e.lookup(".."),"isDashboard"))},function(){return Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),e.lookup("interface"),"is","cmd")},function(){return[Spacebars.include(e.lookupTemplate("cmd")),Spacebars.include(e.lookupTemplate("exclusionsCmd")),Spacebars.include(e.lookupTemplate("cmdFieldsets"))]},function(){return[Spacebars.include(e.lookupTemplate("fieldsets")),HTML.DIV({"class":"secondary-controls"},Spacebars.include(e.lookupTemplate("controlsForTheHeartOfTheSun")))]})}))),"\n",Blaze.If(function(){return Spacebars.dataMustache(e.lookup("not"),e.lookup("isOutputStale"))},function(){return Blaze.If(function(){return Spacebars.call(e.lookup("error"))},function(){return HTML.DIV({"class":"panel-body"},HTML.DIV({"class":["alert"," ","alert-danger"],role:"alert"},HTML.STRONG("Oh snap!"),"\n",HTML.PRE(Blaze.View(function(){return Spacebars.mustache(e.lookup("error"))}))))})}),"\n",Blaze.If(function(){return Spacebars.call(e.lookup("result"))},function(){return[Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),e.lookup("presentation"),"is","table")},function(){return HTML.DIV({"class":"results-scroller"},Spacebars.include(e.lookupTemplate("table")))},function(){return Blaze.If(function(){return Spacebars.dataMustache(e.lookup("not"),e.lookup("isOutputStale"))},function(){return Spacebars.include(e.lookupTemplate("chart"))})}),HTML.DIV({"class":"panel-body"},Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),e.lookup("presentation"),"is","table")},function(){return Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),e.lookup("output"),"in","rwcut","rwcount")},function(){return HTML.UL({"class":"pager"},HTML.LI({"class":function(){return["increment-start-rec-num"," ",[Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),e.lookup("startRecNum"),"lte",1)},function(){return"disabled"})," ",Blaze.If(function(){return Spacebars.call(e.lookup("isOutputStale"))},function(){return"disabled"})]]},"data-increment":function(){return["-",Spacebars.mustache(Spacebars.dot(e.lookup("currentUser"),"profile","numRecs"))]}},HTML.A({href:"#"},HTML.I({"class":["fa"," ","fa-angle-left"]}),"\n","Previous")),"\n",HTML.LI({"class":"dropdown"},HTML.SELECT({"class":["num-recs"," ","form-control"]},Blaze.Each(function(){return Spacebars.call(e.lookup("numRecsOptions"))},function(){return HTML.OPTION({value:function(){return Spacebars.mustache(e.lookup("."))},selected:function(){return Spacebars.mustache(e.lookup("condition"),e.lookup("."),"is",Spacebars.dot(e.lookup("currentUser"),"profile","numRecs"))}},Blaze.View(function(){return Spacebars.mustache(e.lookup("."))})," per page")}))),"\n",HTML.LI({"class":function(){return["increment-start-rec-num"," ",[Blaze.If(function(){return Spacebars.dataMustache(e.lookup("not"),Spacebars.dot(e.lookup("rows"),"length"))},function(){return"disabled"})," ",Blaze.If(function(){return Spacebars.call(e.lookup("isOutputStale"))},function(){return"disabled"})]]},"data-increment":function(){return Spacebars.mustache(Spacebars.dot(e.lookup("currentUser"),"profile","numRecs"))}},HTML.A({href:"#"},"Next","\n",HTML.I({"class":["fa"," ","fa-angle-right"]}))))})}),"\n",Blaze.If(function(){return Spacebars.dataMustache(e.lookup("not"),Spacebars.dot(e.lookup(".."),"isDashboard"))},function(){return[Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),e.lookup("presentation"),"is","chart")},function(){return HTML.DIV({"class":["row"," ","form-horizontal"]},HTML.DIV({"class":["col-xs-4"," ","col-xs-offset-4"]},HTML.DIV({"class":"form-group"},HTML.LABEL({"class":["control-label"," ","col-xs-4"]},"Chart height:"),"\n",HTML.DIV({"class":["input-group"," ","col-xs-6"]},Blaze._TemplateWith(function(){return{family:Spacebars.call("query"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("chartHeight"),value:Spacebars.call(e.lookup("chartHeight")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("input"))}),"\n",HTML.SPAN({"class":"input-group-addon"},"px")))))}),HTML.DIV({"class":"extras"},HTML.A({"class":"download-csv",href:"#"},HTML.I({"class":["normal"," ","fa"," ","fa-file-excel-o"]}),"\n",HTML.I({"class":["loading"," ","fa"," ","fa-spinner"," ","fa-spin"],style:"display: none;"}),"\n","Download full CSV"),"\n",HTML.A({"class":"download-rwf",href:"#"},HTML.I({"class":["normal"," ","fa"," ","fa-file-archive-o"]}),"\n",HTML.I({"class":["loading"," ","fa"," ","fa-spinner"," ","fa-spin"],style:"display: none;"}),"\n","Download full RWF")),Blaze.If(function(){return Spacebars.dataMustache(e.lookup("condition"),e.lookup("output"),"in","rwcut")},function(){return HTML.FORM({"class":"display-fields-block"},HTML.FIELDSET(HTML.LEGEND("Display fields"),"\n",Blaze.Each(function(){return Spacebars.call(e.lookup("fieldsOrder"))},function(){return HTML.DIV({"class":"checkbox"},HTML.LABEL({"data-toggle":"popover",title:function(){return Spacebars.mustache(e.lookup("t"),e.lookup("fieldI18nString"))},"data-content":function(){return Spacebars.mustache(e.lookup("t"),e.lookup("fieldDefinitions"))}},HTML.INPUT({"class":"field-checkbox",type:"checkbox",checked:function(){return Spacebars.mustache(e.lookup("fieldIsSelected"),e.lookup(".."),"fields")},value:function(){return Spacebars.mustache(e.lookup("."))},"data-property":"fields"}),"\n",Blaze.View(function(){return Spacebars.mustache(e.lookup("t"),e.lookup("fieldI18nString"))})))})))})]}))]}))})})}(); !function(){Template.__checkName("tuple"),Template.tuple=new Template("Template.tuple",function(){var e=this;return HTML.DIV({"class":["container-fluid"," ","tuple-default"," ","tuple"]},HTML.DIV({"class":"row"},HTML.DIV({"class":"col-xs-12"},Spacebars.With(function(){return Spacebars.call(e.lookup("tuple"))},function(){return HTML.FORM({"class":["panel"," ","panel-default"]},HTML.DIV({"class":"panel-heading"},HTML.DIV({"class":"form-group"},HTML.LABEL("Tuple File Name"),"\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"Tuple file name","data-content":"This is the name that will be referenced in the query builder. Tuples allow for searching for records based on the 5-tuple, where the values can occur in any direction."}),"\n",HTML.DIV({"class":"input-group"},Blaze._TemplateWith(function(){return{family:Spacebars.call("tuple"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("name"),value:Spacebars.call(e.lookup("name")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("input"))}),"\n",HTML.DIV({"class":"input-group-btn"},HTML.BUTTON({"class":["btn"," ","btn-default"," ","dropdown-toggle"],"data-toggle":"dropdown",type:"button"},HTML.SPAN({"class":"caret"})),"\n",HTML.UL({"class":["dropdown-menu"," ","pull-right"]},HTML.LI(HTML.A({"class":"confirm",href:function(){return["/tuple/",Spacebars.mustache(e.lookup("_id")),"/remove"]},"data-confirmation":"Are you sure you want to delete this Tuple file?"},HTML.I({"class":["fa"," ","fa-trash-o"]}),"\n","Delete this Tuple File"))))))),"\n",HTML.DIV({"class":"panel-body"},HTML.DIV({"class":"form-group"},HTML.LABEL("Note","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"Note","data-content":"These notes are for personal use and can be quickly referenced when examining tuples in the Tuple Files tab."})),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("tuple"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("note"),value:Spacebars.call(e.lookup("note")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("textarea"))})),"\n",HTML.DIV({"class":"form-group"},HTML.LABEL("Tuple Values","\n",HTML.I({"class":["fa"," ","fa-question-circle"," ","text-muted"],"data-toggle":"popover",title:"Note","data-content":"You may enter a list of n-tuples, up to a 5-tuple. You may choose to 2 IP addresses instead of the full 5 tuple to examine records going in either direction or be port specific in order to filter more closely. For more information, see the options in the query builder."})),"\n",Blaze._TemplateWith(function(){return{family:Spacebars.call("tuple"),_id:Spacebars.call(e.lookup("_id")),property:Spacebars.call("contents"),value:Spacebars.call(e.lookup("contents")),isNew:Spacebars.call(e.lookup("isNew"))}},function(){return Spacebars.include(e.lookupTemplate("textarea"))})),"\n",HTML.DIV({"class":"form-group"},HTML.BUTTON({"class":["btn"," ","btn-primary"],type:"submit"},"Save"),"\n",HTML.SPAN({"class":["save-notice"," ","notice"," ","text-success"]},"Successfully saved"),"\n",HTML.SPAN({"class":["create-notice"," ","notice"," ","text-success"]},"Successfully created")),"\n",Blaze.If(function(){return Spacebars.call(Spacebars.dot(e.lookup("queries"),"count"))},function(){return[HTML.HR(),HTML.H4("Queries using this Tuple file"),HTML.UL(Blaze.Each(function(){return Spacebars.call(e.lookup("queries"))},function(){return HTML.LI(HTML.A({href:function(){return Spacebars.mustache(e.lookup("path"))}},Blaze.View(function(){return Spacebars.mustache(e.lookup("displayName"))})))}))]})))}))))})}(); @@ -266,13 +266,13 @@ Router=Package["iron:router"].Router,RouteController=Package["iron:router"].Rout !function(){function e(e){for(var r=0,a=s.length;a>r;r++)e=e.replace(s[r],"");return e}function r(){for(var e="",r=10;r--;)e+=String.fromCharCode(25*Math.random()|97);return e}function a(e){return e.replace(">",">").replace("<","<").replace("\\","\\\\")}function i(e){var r="",a=e.match(/\s*[a-z-]+\s*=\s*(\x22|\x27)([^\1]*?)\1/gi);if(a)for(var i=0;i","'":"'","−":"−","ˆ":"ˆ","˜":"˜","Š":"Š","‹":"‹","Œ":"Œ","‘":"‘","’":"’","“":"“","”":"”","•":"•","–":"–","—":"—","™":"™","š":"š","›":"›","œ":"œ","Ÿ":"Ÿ","ƒ":"ƒ","Α":"Α","Β":"Β","Γ":"Γ","Δ":"Δ","Ε":"Ε","Ζ":"Ζ","Η":"Η","Θ":"Θ","Ι":"Ι","Κ":"Κ","Λ":"Λ","Μ":"Μ","Ν":"Ν","Ξ":"Ξ","Ο":"Ο","Π":"Π","Ρ":"Ρ","Σ":"Σ","Τ":"Τ","Υ":"Υ","Φ":"Φ","Χ":"Χ","Ψ":"Ψ","Ω":"Ω","α":"α","β":"β","γ":"γ","δ":"δ","ε":"ε","ζ":"ζ","η":"η","θ":"θ","ι":"ι","κ":"κ","λ":"λ","μ":"μ","ν":"ν","ξ":"ξ","ο":"ο","π":"π","ρ":"ρ","ς":"ς","σ":"σ","τ":"τ","υ":"υ","φ":"φ","χ":"χ","ψ":"ψ","ω":"ω","ϑ":"ϑ","ϒ":"ϒ","ϖ":"ϖ"," ":" "," ":" "," ":" ","‌":"‌","‍":"‍","‎":"‎","‏":"‏","‚":"‚","„":"„","†":"†","‡":"‡","…":"…","‰":"‰","′":"′","″":"″","‾":"‾","⁄":"⁄","ℑ":"ℑ","℘":"℘","ℜ":"ℜ","ℵ":"ℵ","←":"←","↑":"↑","→":"→","↓":"↓","↔":"↔","↵":"↵","⇐":"⇐","⇑":"⇑","⇒":"⇒","⇓":"⇓","⇔":"⇔","∀":"∀","∂":"∂","∃":"∃","∅":"∅","∇":"∇","∈":"∈","∉":"∉","∋":"∋","∏":"∏","∑":"∑","∗":"∗","√":"√","∝":"∝","∞":"∞","∠":"∠","∧":"∧","∨":"∨","∩":"∩","∪":"∪","∫":"∫","∴":"∴","∼":"∼","≅":"≅","≈":"≈","≠":"≠","≡":"≡","≤":"≤","≥":"≥","⊂":"⊂","⊃":"⊃","⊄":"⊄","⊆":"⊆","⊇":"⊇","⊕":"⊕","⊗":"⊗","⊥":"⊥","⋅":"⋅","⌈":"⌈","⌉":"⌉","⌊":"⌊","⌋":"⌋","⟨":"〈","⟩":"〉","◊":"◊","♠":"♠","♣":"♣","♥":"♥","♦":"♦"},n=function(e){if(!~e.indexOf("&"))return e;for(var r in c)e=e.replace(new RegExp(r,"g"),c[r]);return e=e.replace(/&#x(0*[0-9a-f]{2,5});?/gi,function(e,r){return String.fromCharCode(parseInt(+r,16))}),e=e.replace(/&#([0-9]{2,4});?/gi,function(e,r){return String.fromCharCode(+r)}),e=e.replace(/&/g,"&")},o={"document.cookie":"[removed]","document.write":"[removed]",".parentNode":"[removed]",".innerHTML":"[removed]","window.location":"[removed]","-moz-binding":"[removed]","":"-->","(":"<comment>"},l={"javascript\\s*:":"[removed]","expression\\s*(\\(|()":"[removed]","vbscript\\s*:":"[removed]","Redirect\\s+302":"[removed]","([\"'])?data\\s*:[^\\1]*?base64[^\\1]*?,[^\\1]*?\\1?":"[removed]"},s=[/%0[0-8bcef]/g,/%1[0-9a-f]/g,/[\x00-\x08]/g,/\x0b/g,/\x0c/g,/[\x0e-\x1f]/g],p=["javascript","expression","vbscript","script","base64","applet","alert","document","write","cookie","window"];t.xssClean=function(t,c){t=e(t);var s;do s=r();while(t.indexOf(s)>=0);t=t.replace(/\&([a-z\_0-9\-]+)\=([a-z\_0-9\-]+)/gi,s+"$1=$2"),t=t.replace(/(&#?[0-9a-z]{2,})([\x00-\x20])*;?/gi,"$1;$2"),t=t.replace(/(&#x?)([0-9A-F]+);?/gi,"$1$2;"),t=t.replace(new RegExp(s,"g"),"&");try{t=decodeURIComponent(t)}catch(u){}t=t.replace(/[a-z]+=([\'\"]).*?\1/gi,function(e,r){return e.replace(r,a(r))}),t=t.replace(/<\w+.*/gi,function(e){return e.replace(e,n(e))}),t=e(t),t=t.replace(" "," ");var m=t;for(var g in o)t=t.replace(new RegExp(g,"gi"),o[g]);for(var g in l)t=t.replace(new RegExp(g,"gi"),l[g]);for(var g=0,d=p.length;d>g;g++){var f=p[g].split("").join("\\s*")+"\\s*";t=t.replace(new RegExp("("+f+")(\\W)","ig"),function(e,r,a){return r.replace(/\s+/g,"")+a})}do{var v=t;t.match(/]*?)(>|$)/gi,function(e,r,a){var t=i(r.replace("<","").replace(">",""));return t=t.replace(/href=.*?(?:alert\(|alert(|javascript:|livescript:|mocha:|charset=|window\.|document\.|\.cookie|]*?)(\s?\/?>|$)/gi,function(e,r,a){var t=i(r.replace("<","").replace(">",""));return t=t.replace(/src=.*?(?:alert\(|alert(|javascript:|livescript:|mocha:|charset=|window\.|document\.|\.cookie|/gi,"[removed]"))}while(v!==t);var h=["\\bon\\w*","\\bstyle","\\bformaction"];c||h.push("xmlns");do{var x=[],b=0;if(x=x.concat(t.match(new RegExp("("+h.join("|")+")\\s*=\\s*(\\x22|\\x27)([^\\2]*?)(\\2)","ig"))),x=x.concat(t.match(new RegExp("("+h.join("|")+")\\s*=\\s*([^\\s>]*)","ig"))),x=x.filter(function(e){return null!==e}),x.length>0){for(var g=0;g|:\\-]","g"),"\\$&");t=t.replace(new RegExp("(<]+?)([^A-Za-z<>\\-])(.*?)("+x.join("|")+")(.*?)([\\s><]?)([><]*)","i"),function(e,r,a,i,t,c,n,o,l){return++b,r+a+" "+t+n+o+l})}}while(b>0);var w="alert|applet|audio|basefont|base|behavior|bgsound|blink|body|embed|expression|form|frameset|frame|head|html|ilayer|iframe|input|isindex|layer|link|meta|object|plaintext|style|script|textarea|title|video|xml|xss";t=t.replace(new RegExp("<(/*\\s*)("+w+")([^><]*)([><]*)","gi"),function(e,r,a,i,t){return"<"+r+a+i+t.replace(">",">").replace("<","<")}),t=t.replace(/(alert|cmd|passthru|eval|exec|expression|system|fopen|fsockopen|file|file_get_contents|readfile|unlink)(\s*)\((.*?)\)/gi,"$1$2($3)");for(var g in o)t=t.replace(new RegExp(g,"gi"),o[g]);for(var g in l)t=t.replace(new RegExp(g,"gi"),l[g]);if(c&&t!==m)throw new Error("Image may contain XSS");return t}}(); -!function(){__coffeescriptShare="object"==typeof __coffeescriptShare?__coffeescriptShare:{};var e=__coffeescriptShare,t,e;e=e||{},e.user=function(e,t){return null==t&&(t=Meteor.userId()),Meteor.users.findOne(t,{fields:e})},e.intval=function(e){return parseInt(e,10)||0},e.minute=6e4,e.hour=60*e.minute,e.datetimeFormat="YYYY/MM/DD HH:mm:ss.SSS",e.rwcutFields=["sIP","dIP","sPort","dPort","protocol","packets","bytes","flags","sTime","duration","eTime","sensor","class","scc","dcc","initialFlags","sessionFlags","application","type","icmpTypeCode"],e.rwstatsValues=["Records","Packets","Bytes"],e.rwcountFields=["Date","Records","Bytes","Packets"],e.rwcountLoadSchemes=["","bin-uniform","start-spike","end-spike","middle-spike","time-proportional","maximum-volume","minimum-volume"],e.tupleDirections=["","both","forward","reverse"],e.availableChartTypes={rwcut:[],rwstats:["BarChart","ColumnChart","PieChart"],rwcount:["LineChart"]},e.chartFieldTypes={sPort:"number",dPort:"number",protocol:"number",pro:"number",packets:"number",bytes:"number",sTime:"datetime",duration:"number",dur:"number",eTime:"datetime",Records:"number",Packets:"number",Bytes:"number",Date:"datetime","cumul_%":"number"},e.startDateOffsets={Hour:60..toString(),Day:1440..toString(),Week:10080..toString(),Month:43200..toString()},e.parseResult=function(e){var t,n,s,i,a;for(n=[],a=e.split("\n"),s=0,i=a.length;i>s;s++)t=a[s],n.push(t.split("|"));return n},e.queryTypes=["in","out","inweb","outweb","inicmp","outicmp","innull","outnull","int2int","ext2ext","other"],e.inputFields=["interface","cmd","exclusionsCmd","startDateEnabled","startDate","endDateEnabled","endDate","sensorEnabled","sensor","typesEnabled","types","daddressEnabled","daddress","saddressEnabled","saddress","anyAddressEnabled","anyAddress","dipSetEnabled","dipSet","sipSetEnabled","sipSet","anySetEnabled","anySet","tupleFileEnabled","tupleFile","tupleDirectionEnabled","tupleDirection","tupleDelimiterEnabled","tupleDelimiter","tupleFieldsEnabled","tupleFields","dportEnabled","dport","sportEnabled","sport","aportEnabled","aport","dccEnabled","dcc","sccEnabled","scc","protocolEnabled","protocol","flagsAllEnabled","flagsAll","activeTimeEnabled","activeTime","additionalParametersEnabled","additionalParameters","additionalExclusionsCmdEnabled","additionalExclusionsCmd"],e.filterOptions=function(e,t){var n,s,i,a,r,o;for(null==t&&(t=""),o=["--python-expr","--python-file","--pmap","--dynamic-library","--all-destination","--fail-destination","--pass-destination","--print-statistics","--print-volume-statistics","--xargs"],a=0,r=o.length;r>a;a++)n=o[a],i=new RegExp(n+"=?[^\\s]*","gi"),e=e.replace(i,"");return s=new RegExp("[^\\s\\=\\-\\/\\,\\.\\:0-9a-z"+t+"]","gi"),e=e.replace(s,"")},e.isDebug=Meteor.settings["public"].isDebug,t="undefined"!=typeof window?window:GLOBAL,t.isDebug=e.isDebug,t.cl="undefined"!=typeof console&&console.log&&_.isFunction(console.log)?_.bind(console.log,console):function(){}}(); +!function(){__coffeescriptShare="object"==typeof __coffeescriptShare?__coffeescriptShare:{};var e=__coffeescriptShare,t,e;e=e||{},e.user=function(e,t){return null==t&&(t=Meteor.userId()),Meteor.users.findOne(t,{fields:e})},e.intval=function(e){return parseInt(e,10)||0},e.minute=6e4,e.hour=60*e.minute,e.datetimeFormat="YYYY/MM/DD HH:mm:ss.SSS",e.rwcutFields=["sIP","dIP","sPort","dPort","protocol","packets","bytes","flags","sTime","duration","eTime","sensor","class","scc","dcc","initialFlags","sessionFlags","application","type","icmpTypeCode"],e.rwstatsValues=["Records","Packets","Bytes"],e.rwcountFields=["Date","Records","Bytes","Packets"],e.rwcountLoadSchemes=["","bin-uniform","start-spike","end-spike","middle-spike","time-proportional","maximum-volume","minimum-volume"],e.tupleDirections=["","both","forward","reverse"],e.availableChartTypes={rwcut:[],rwstats:["BarChart","ColumnChart","PieChart"],rwcount:["LineChart"]},e.chartFieldTypes={sPort:"number",dPort:"number",protocol:"number",pro:"number",packets:"number",bytes:"number",sTime:"datetime",duration:"number",dur:"number",eTime:"datetime",Records:"number",Packets:"number",Bytes:"number",Date:"datetime","cumul_%":"number"},e.startDateOffsets={Hour:60..toString(),Day:1440..toString(),Week:10080..toString(),Month:43200..toString()},e.parseResult=function(e){var t,n,s,i,a;for(n=[],a=e.split("\n"),s=0,i=a.length;i>s;s++)t=a[s],n.push(t.split("|"));return n},e.queryTypes=["in","out","inweb","outweb","inicmp","outicmp","innull","outnull","int2int","ext2ext","other"],e.inputFields=["interface","cmd","exclusionsCmd","startDateEnabled","startDate","endDateEnabled","endDate","sensorEnabled","sensor","typesEnabled","types","daddressEnabled","daddress","saddressEnabled","saddress","anyAddressEnabled","anyAddress","dipSetEnabled","dipSet","sipSetEnabled","sipSet","anySetEnabled","anySet","tupleFileEnabled","tupleFile","tupleDirectionEnabled","tupleDirection","tupleDelimiterEnabled","tupleDelimiter","tupleFieldsEnabled","tupleFields","dportEnabled","dport","sportEnabled","sport","aportEnabled","aport","dccEnabled","dcc","sccEnabled","scc","protocolEnabled","protocol","flagsAllEnabled","flagsAll","activeTimeEnabled","activeTime","additionalParametersEnabled","additionalParameters","additionalExclusionsCmdEnabled","additionalExclusionsCmd"],e.filterOptions=function(e,t){var n,s,i,a,r,o;for(null==t&&(t=""),o=["--python-expr","--python-file","--pmap","--dynamic-library","--all-destination","--fail-destination","--pass-destination","--print-statistics","--print-volume-statistics","--xargs"],a=0,r=o.length;r>a;a++)n=o[a],i=new RegExp(n+"=?[^\\s]*","gi"),e=e.replace(i,"");return s=new RegExp("[^\\s\\=\\-\\/\\,\\.\\:0-9a-z_"+t+"]","gi"),e=e.replace(s,"")},e.isDebug=Meteor.settings["public"].isDebug,t="undefined"!=typeof window?window:GLOBAL,t.isDebug=e.isDebug,t.cl="undefined"!=typeof console&&console.log&&_.isFunction(console.log)?_.bind(console.log,console):function(){}}(); !function(){__coffeescriptShare="object"==typeof __coffeescriptShare?__coffeescriptShare:{};var e=__coffeescriptShare;e.linkRegExp=new RegExp(["(",'\\s|[^a-zA-Z0-9.\\+_\\/"\\>\\-]|^',")(?:","(","[a-zA-Z0-9\\+_\\-]+","(?:","\\.[a-zA-Z0-9\\+_\\-]+",")*@",")?(","http:\\/\\/|https:\\/\\/|ftp:\\/\\/",")?(?:(","(?:(?:[a-z0-9_%\\-_+]*[a-z][a-z0-9_%\\-_+]*[.:])+)",")(","(?:com|ca|co|edu|gov|net|org|dev|biz|cat|int|pro|tel|mil|aero|asia|coop|info|jobs|mobi|museum|name|post|travel|local|[0-9]{2,}|[a-z]{2})",")|file:\\/\\/)(","(?:","[\\/|\\?]","(?:","[\\-a-zA-Z0-9_%#*&+=~!?,;:.\\/]*",")*",")","[\\-\\/a-zA-Z0-9_%#*&+=~]","|","\\/?",")?",")(",'[^a-zA-Z0-9\\+_\\/"\\<\\-]|$',")"].join(""),"mg"),e.emailLinkRegExp=/(<[a-z]+ href=\")(http:\/\/)([a-zA-Z0-9\+_\-]+(?:\.[a-zA-Z0-9\+_\-]+)*@)/g,e.emailRegex=/^[^@]+@[^@]+$/gi,e.createTextSearchRegexp=function(a,t){return null==t&&(t=!1),a=e.escapeRegexp(a),t&&("left"===t?a="^"+a:"right"===t?a+="$":a="^"+a+"$"),new RegExp(a,"i")},e.escapeRegexp=function(e){return e.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}}(); !function(){__coffeescriptShare="object"==typeof __coffeescriptShare?__coffeescriptShare:{};var e=__coffeescriptShare,r=[].indexOf||function(e){for(var r=0,t=this.length;t>r;r++)if(r in this&&this[r]===e)return r;return-1};e.Security={effectiveRoles:{admin:["admin","analyst"],analyst:["admin","analyst"]},groups:function(){return Object.keys(this.effectiveRoles)},currentUserHasRole:function(r){return e.Security.hasRole(Meteor.userId(),r)},userIdCanChangeUserGroupOrRemove:function(e,r){return e!==r._id&&this.hasRole(e,"admin")},hasRole:function(t,n){var i;return i=Meteor.users.findOne(t),i&&r.call(e.Security.effectiveRoles[i.group],n)>=0?!0:!1}}}(); -!function(){__coffeescriptShare="object"==typeof __coffeescriptShare?__coffeescriptShare:{};var t=__coffeescriptShare,e=[].indexOf||function(t){for(var e=0,s=this.length;s>e;e++)if(e in this&&this[e]===t)return e;return-1};t.User=function(){function t(t){var e,s;_.extend(this,t),this.email=null!=(e=this.emails)&&null!=(s=e[0])?s.address:void 0,this.name=this.profile.name,this.firstName=this.name.split(" ").slice(0,1).join(" "),this.lastName=this.name.split(" ").slice(1).join(" ")}return t}(),t.Config=function(){function t(t){_.extend(this,t)}return t.prototype.wrapCommand=function(t){return"ssh "+this.getSSHOptions()+" -p "+this.port+" "+this.user+"@"+this.host+' "'+t+'"'},t.prototype.getSSHOptions=function(){return"-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=error -i "+this.getIdentityFile()},t.prototype.getIdentityFile=function(){return this.identityFile?this.identityFile:process.env.PWD+"/settings/identity"},t}(),t.Query=function(){function s(s){var i,n,r,a,o,h,u,l,p,d,c,f,m,w,y,g,b,S,C,E,F,D,T,v,O;if(_.extend(this,s),this.header=[],this.rows=[],this.result){for(h=t.parseResult(this.result),"rwstats"===this.output&&(h.shift(),h.shift()),"rwcount"===this.output&&h.unshift(t.rwcountFields),p=h.shift(),f=0,g=p.length;g>f;f++)o=p[f],c={_id:o,name:o.trim(),isDistinct:!1,isPercentage:!1},0===c.name.indexOf("%")&&(c.isPercentage=!0,c.name=c.name.substr(1)),i=/-D.*$/i,c.name.match(i)&&(c.isDistinct=!0,c.name=c.name.replace(i,"")),c.chartType=c.isDistinct?"number":t.chartFieldTypes[c.name]||"string",this.header.push(c);if("chart"===this.presentation)for(m=0,b=h.length;b>m;m++){for(u=h[m],d=[],r=w=0,S=u.length;S>w;r=++w)if(l=u[r],c=this.header[r],!("rwcount"===this.output&&(v=c.name,e.call(this.rwcountFields,v)<0))){switch(c.chartType){case"number":l=parseFloat(l);break;case"date":case"datetime":a=moment.utc(l,"YYYY/MM/DDTHH:mm:ss.SSS"),l=a.toDate()}d.push(l)}this.rows.push(d)}else for(y=0,C=h.length;C>y;y++){for(u=h[y],d=[],r=D=0,E=u.length;E>D;r=++D)l=u[r],c=this.header[r],d.push({_id:c._id,value:l,queryId:this._id});this.rows.push(d)}for(n=[],O=this.header,T=0,F=O.length;F>T;T++)c=O[T],n.push(c);this.header=n}}return s.prototype.displayName=function(){return this.isQuick?"Quick query #"+this._id:this.name||"#"+this._id},s.prototype.inputCommand=function(t,e,s){var i,n,r,a,o,h;for(null==s&&(s=!1),i="rwfilter",i+=" "+this.inputOptions(t),t.siteConfigFile&&(i+=" --site-config-file="+t.siteConfigFile),r=i.search(RegExp(" (\\/|\\w)+\\.(rwf|rw)","i")),0>r&&t.dataRootdir&&(i+=" --data-rootdir="+t.dataRootdir),i+=" --pass=stdout",h=this.inputExclusions(),a=0,o=h.length;o>a;a++)n=h[a],i+=" | rwfilter --input-pipe=stdin",i+=" "+n,t.siteConfigFile&&(i+=" --site-config-file="+t.siteConfigFile),i+=" --fail=stdout";return i+=" > "+(t.dataTempdir||"/tmp")+"/"+this._id+".rwf",t.isSSH&&!s&&(i=t.wrapCommand(i)),i},s.prototype.inputOptions=function(e){var s,i,n,r,a,o;return"builder"===this["interface"]?(i=[],o=this.typesEnabled&&this.types.length&&_.difference(t.queryTypes,this.types).length?this.types.join(","):"all",i.push("--type="+o),"interval"===this.startDateType?(this.startDateEnabled&&this.startDate&&i.push("--start-date="+this.startDate),this.endDateEnabled&&this.endDate&&i.push("--end-date="+this.endDate),this.activeTimeEnabled&&this.activeTime&&i.push("--active-time="+this.activeTime)):this.startDateOffsetEnabled&&this.startDateOffset&&(r=t.intval(this.startDateOffset),s=moment.utc(),n=s.clone().subtract(r,"minutes"),i.push("--start-date="+n.format("YYYY/MM/DD:HH")),i.push("--end-date="+s.format("YYYY/MM/DD:HH")),i.push("--active-time="+n.format("YYYY/MM/DDTHH:mm:ss.SSS")+"-"+s.format("YYYY/MM/DDTHH:mm:ss.SSS"))),this.sensorEnabled&&this.sensor&&i.push("--sensor="+this.sensor),this.daddressEnabled&&this.daddress&&i.push("--daddress="+this.daddress),this.saddressEnabled&&this.saddress&&i.push("--saddress="+this.saddress),this.anyAddressEnabled&&this.anyAddress&&i.push("--any-address="+this.anyAddress),this.dipSetEnabled&&this.dipSet&&i.push("--dipset="+(e.dataTempdir||"/tmp")+"/"+this.dipSet+".rws"),this.sipSetEnabled&&this.sipSet&&i.push("--sipset="+(e.dataTempdir||"/tmp")+"/"+this.sipSet+".rws"),this.anySetEnabled&&this.anySet&&i.push("--anyset="+(e.dataTempdir||"/tmp")+"/"+this.anySet+".rws"),this.tupleFileEnabled&&this.tupleFile&&i.push("--tuple-file="+(e.dataTempdir||"/tmp")+"/"+this.tupleFile+".tuple"),this.tupleDirectionEnabled&&this.tupleDirection&&i.push("--tuple-direction="+this.tupleDirection),this.tupleDelimiterEnabled&&this.tupleDelimiter&&i.push("--tuple-delimiter="+this.tupleDelimiter),this.tupleFieldsEnabled&&this.tupleFields&&i.push("--tuple-fields="+this.tupleFields),this.dportEnabled&&this.dport&&i.push("--dport="+this.dport),this.sportEnabled&&this.sport&&i.push("--sport="+this.sport),this.aportEnabled&&this.aport&&i.push("--aport="+this.aport),this.dccEnabled&&this.dcc.length&&i.push("--dcc="+this.dcc.join(",")),this.sccEnabled&&this.scc.length&&i.push("--scc="+this.scc.join(",")),this.protocolEnabled&&this.protocol&&i.push("--protocol="+this.protocol),this.flagsAllEnabled&&this.flagsAll&&i.push("--flags-all="+this.flagsAll),this.additionalParametersEnabled&&this.additionalParameters&&i.push(this.additionalParameters),a=i.join(" ")):a=this.cmd,t.filterOptions(a)},s.prototype.inputExclusions=function(){var e;return e="","builder"===this["interface"]?this.additionalExclusionsCmdEnabled&&(e=this.additionalExclusionsCmd):e=this.exclusionsCmd,e=t.filterOptions(e),_.compact(e.split(/\s+(?:OR|\|\|)\s+/i))},s.prototype.outputCommand=function(t,e,s){switch(null==s&&(s=!1),this.output){case"rwcut":return this.outputRwcutCommand(t,e,s);case"rwstats":return this.outputRwstatsCommand(t,e,s);case"rwcount":return this.outputRwcountCommand(t,e,s)}},s.prototype.outputRwcutCommand=function(e,s,i){var n,r,a,o,h,u;return null==i&&(i=!1),r=[],this.sortField&&(h=["--fields="+this.sortField],this.sortReverse&&h.push("--reverse"),e.siteConfigFile&&h.push("--site-config-file="+e.siteConfigFile),u=h.join(" "),u=t.filterOptions(u),r.push("rwsort "+u)),a=["--num-recs="+s.numRecs,"--start-rec-num="+this.startRecNum,"--delimited"],this.fields.length&&a.push("--fields="+_.intersection(this.fieldsOrder,this.fields).join(",")),e.siteConfigFile&&a.push("--site-config-file="+e.siteConfigFile),o=a.join(" "),o=t.filterOptions(o),r.push("rwcut "+o),r[0]+=" "+(e.dataTempdir||"/tmp")+"/"+this._id+".rwf",n=r.join(" | "),e.isSSH&&!i&&(n=e.wrapCommand(n)),n},s.prototype.outputRwstatsCommand=function(s,i,n){var r,a,o,h,u,l,p,d,c,f,m,w;if(null==n&&(n=!1),a=["--delimited"],"builder"===this["interface"]){if(h=a,this.rwstatsFields.length&&h.push("--fields="+_.intersection(this.rwstatsFieldsOrder,this.rwstatsFields).join(",")),l=this.rwstatsValues.slice(0),p=this.rwstatsValuesOrder.slice(0),this.rwstatsPrimaryValue&&(l.unshift(this.rwstatsPrimaryValue),p.unshift(this.rwstatsPrimaryValue)),l.length){for(c=_.intersection(p,l),o=f=0,m=c.length;m>f;o=++f)d=c[o],e.call(t.rwstatsValues,d)<0&&(c[o]="distinct:"+d);h.push("--values="+c.join(",")),w=c[0],e.call(t.rwstatsValues,w)<0&&h.push("--no-percents")}switch(h.push("--"+this.rwstatsDirection),this.rwstatsMode){case"count":h.push("--count="+this.rwstatsCountModeValue);break;case"threshold":h.push("--threshold="+this.rwstatsThresholdModeValue);break;case"percentage":h.push("--percentage="+this.rwstatsPercentageModeValue)}this.rwstatsBinTimeEnabled&&h.push(this.rwstatsBinTime?"--bin-time="+this.rwstatsBinTime:"--bin-time"),s.siteConfigFile&&h.push("--site-config-file="+s.siteConfigFile),u=h.join(" ")}else u=this.rwstatsCmd+" "+a.join(" "),u=t.filterOptions(u);return r="rwstats "+u,r+=" "+(s.dataTempdir||"/tmp")+"/"+this._id+".rwf",s.isSSH&&!n&&(r=s.wrapCommand(r)),r},s.prototype.outputRwcountCommand=function(e,s,i){var n,r,a,o,h,u,l,p,d,c,f;return null==i&&(i=!1),r=["--delimited","--no-titles"],"builder"===this["interface"]?(u=r,this.rwcountBinSizeEnabled&&u.push("--bin-size="+this.rwcountBinSize),this.rwcountLoadSchemeEnabled&&u.push("--load-scheme="+this.rwcountLoadScheme),this.rwcountSkipZeroes&&u.push("--skip-zeroes"),e.siteConfigFile&&u.push("--site-config-file="+e.siteConfigFile),l=u.join(" ")):l=this.rwcountCmd+" "+r.join(" "),l=t.filterOptions(l),n="rwcount "+l,n+=" "+(e.dataTempdir||"/tmp")+"/"+this._id+".rwf","table"===this.presentation&&(this.sortField&&(a=t.rwcountFields.indexOf(this.sortField),d="--field-separator=\\| --key=+"+(a+1)+"n"+(this.sortReverse?"r":""),d=t.filterOptions(d,"\\\\\\|\\+"),p="sort "+d,n+=" | "+p),s.numRecs&&(h="--lines="+(this.startRecNum+s.numRecs-1),h=t.filterOptions(h),o="head "+h,f="--lines="+s.numRecs,f=t.filterOptions(f),c="tail "+f,n+=" | "+o+" | "+c)),e.isSSH&&!i&&(n=e.wrapCommand(n)),n},s.prototype.rwstatsCountModeValueIsEnabled=function(){return"count"===this.rwstatsMode},s.prototype.rwstatsThresholdModeValueIsEnabled=function(){return"threshold"===this.rwstatsMode},s.prototype.rwstatsPercentageModeValueIsEnabled=function(){return"percentage"===this.rwstatsMode},s.prototype.availableChartTypes=function(){return t.availableChartTypes[this.output]},s.prototype.path=function(){return"/query/"+this._id},s}(),t.IPSet=function(){function t(t){_.extend(this,t)}return t.prototype.displayName=function(){return this.name||"#"+this._id},t.prototype.objectSelectName=function(){return this.displayName()},t.prototype.objectSelectValue=function(){return this._id},t.prototype.path=function(){return"/ipset/"+this._id},t}(),t.Tuple=function(){function t(t){_.extend(this,t)}return t.prototype.displayName=function(){return this.name||"#"+this._id},t.prototype.objectSelectName=function(){return this.displayName()},t.prototype.objectSelectValue=function(){return this._id},t.prototype.path=function(){return"/tuple/"+this._id},t}(),t.Transformations={user:function(e){return e instanceof t.User||!e?e:new t.User(e)},config:function(e){return e instanceof t.Config||!e?e:new t.Config(e)},query:function(e){return e instanceof t.Query||!e?e:new t.Query(e)},ipset:function(e){return e instanceof t.IPSet||!e?e:new t.IPSet(e)},tuple:function(e){return e instanceof t.Tuple||!e?e:new t.Tuple(e)}}}(); +!function(){__coffeescriptShare="object"==typeof __coffeescriptShare?__coffeescriptShare:{};var t=__coffeescriptShare,e=[].indexOf||function(t){for(var e=0,s=this.length;s>e;e++)if(e in this&&this[e]===t)return e;return-1};t.User=function(){function t(t){var e,s;_.extend(this,t),this.email=null!=(e=this.emails)&&null!=(s=e[0])?s.address:void 0,this.name=this.profile.name,this.firstName=this.name.split(" ").slice(0,1).join(" "),this.lastName=this.name.split(" ").slice(1).join(" ")}return t}(),t.Config=function(){function t(t){_.extend(this,t)}return t.prototype.wrapCommand=function(t){return"ssh "+this.getSSHOptions()+" -p "+this.port+" "+this.user+"@"+this.host+' "'+t+'"'},t.prototype.getSSHOptions=function(){return"-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=error -i "+this.getIdentityFile()},t.prototype.getIdentityFile=function(){return this.identityFile?this.identityFile:process.env.PWD+"/settings/identity"},t}(),t.Query=function(){function s(s){var i,n,r,a,o,h,u,p,l,d,c,f,m,w,y,g,b,S,E,C,F,D,T,v,O;if(_.extend(this,s),this.header=[],this.rows=[],this.result){for(h=t.parseResult(this.result),"rwstats"===this.output&&(h.shift(),h.shift()),"rwcount"===this.output&&h.unshift(t.rwcountFields),l=h.shift(),f=0,g=l.length;g>f;f++)o=l[f],c={_id:o,name:o.trim(),isDistinct:!1,isPercentage:!1},0===c.name.indexOf("%")&&(c.isPercentage=!0,c.name=c.name.substr(1)),i=/-D.*$/i,c.name.match(i)&&(c.isDistinct=!0,c.name=c.name.replace(i,"")),c.chartType=c.isDistinct?"number":t.chartFieldTypes[c.name]||"string",this.header.push(c);if("chart"===this.presentation)for(m=0,b=h.length;b>m;m++){for(u=h[m],d=[],r=w=0,S=u.length;S>w;r=++w)if(p=u[r],c=this.header[r],!("rwcount"===this.output&&(v=c.name,e.call(this.rwcountFields,v)<0))){switch(c.chartType){case"number":p=parseFloat(p);break;case"date":case"datetime":a=moment.utc(p,"YYYY/MM/DDTHH:mm:ss.SSS"),p=a.toDate()}d.push(p)}this.rows.push(d)}else for(y=0,E=h.length;E>y;y++){for(u=h[y],d=[],r=D=0,C=u.length;C>D;r=++D)p=u[r],c=this.header[r],d.push({_id:c._id,value:p,queryId:this._id});this.rows.push(d)}for(n=[],O=this.header,T=0,F=O.length;F>T;T++)c=O[T],n.push(c);this.header=n}}return s.prototype.displayName=function(){return this.isQuick?"Quick query #"+this._id:this.name||"#"+this._id},s.prototype.inputCommand=function(t,e,s){var i,n,r,a,o,h,u,p,l;for(null==s&&(s=!1),i="rwfilter",i+=" "+this.inputOptions(t),"cmd"===this["interface"]&&(h=i.search(RegExp("--type","i")),0>h&&(i+=" --type=all ")),t.siteConfigFile&&(i+=" --site-config-file="+t.siteConfigFile),o=i.search(RegExp(" (\\/|\\w)+(\\/|\\w|\\-)*\\.(rwf|rw)","i")),0>o&&(a=i.search(RegExp(" (\\/|\\w)+(\\/|\\w|\\-)*\\.(pcap)","i")),a>=0?(r=i.match(RegExp("(\\/|\\w)+(\\/|\\w|\\-)*\\.(pcap)","i")),i+=" --input-pipe=stdin",i=i.replace(r[0],""),i="rwp2yaf2silk --in="+r[0]+" --out=- |"+i):t.dataRootdir&&(i+=" --data-rootdir="+t.dataRootdir)),i+=" --pass=stdout",l=this.inputExclusions(),u=0,p=l.length;p>u;u++)n=l[u],i+=" | rwfilter --input-pipe=stdin",i+=" "+n,t.siteConfigFile&&(i+=" --site-config-file="+t.siteConfigFile),i+=" --fail=stdout";return i+=" > "+(t.dataTempdir||"/tmp")+"/"+this._id+".rwf",t.isSSH&&!s&&(i=t.wrapCommand(i)),i},s.prototype.inputOptions=function(e){var s,i,n,r,a,o;return"builder"===this["interface"]?(i=[],o=this.typesEnabled&&this.types.length&&_.difference(t.queryTypes,this.types).length?this.types.join(","):"all",i.push("--type="+o),"interval"===this.startDateType?(this.startDateEnabled&&this.startDate&&i.push("--start-date="+this.startDate),this.endDateEnabled&&this.endDate&&i.push("--end-date="+this.endDate),this.activeTimeEnabled&&this.activeTime&&i.push("--active-time="+this.activeTime)):this.startDateOffsetEnabled&&this.startDateOffset&&(r=t.intval(this.startDateOffset),s=moment.utc(),n=s.clone().subtract(r,"minutes"),i.push("--start-date="+n.format("YYYY/MM/DD:HH")),i.push("--end-date="+s.format("YYYY/MM/DD:HH")),i.push("--active-time="+n.format("YYYY/MM/DDTHH:mm:ss.SSS")+"-"+s.format("YYYY/MM/DDTHH:mm:ss.SSS"))),this.sensorEnabled&&this.sensor&&i.push("--sensor="+this.sensor),this.daddressEnabled&&this.daddress&&i.push("--daddress="+this.daddress),this.saddressEnabled&&this.saddress&&i.push("--saddress="+this.saddress),this.anyAddressEnabled&&this.anyAddress&&i.push("--any-address="+this.anyAddress),this.dipSetEnabled&&this.dipSet&&i.push("--dipset="+(e.dataTempdir||"/tmp")+"/"+this.dipSet+".rws"),this.sipSetEnabled&&this.sipSet&&i.push("--sipset="+(e.dataTempdir||"/tmp")+"/"+this.sipSet+".rws"),this.anySetEnabled&&this.anySet&&i.push("--anyset="+(e.dataTempdir||"/tmp")+"/"+this.anySet+".rws"),this.tupleFileEnabled&&this.tupleFile&&i.push("--tuple-file="+(e.dataTempdir||"/tmp")+"/"+this.tupleFile+".tuple"),this.tupleDirectionEnabled&&this.tupleDirection&&i.push("--tuple-direction="+this.tupleDirection),this.tupleDelimiterEnabled&&this.tupleDelimiter&&i.push("--tuple-delimiter="+this.tupleDelimiter),this.tupleFieldsEnabled&&this.tupleFields&&i.push("--tuple-fields="+this.tupleFields),this.dportEnabled&&this.dport&&i.push("--dport="+this.dport),this.sportEnabled&&this.sport&&i.push("--sport="+this.sport),this.aportEnabled&&this.aport&&i.push("--aport="+this.aport),this.dccEnabled&&this.dcc.length&&i.push("--dcc="+this.dcc.join(",")),this.sccEnabled&&this.scc.length&&i.push("--scc="+this.scc.join(",")),this.protocolEnabled&&this.protocol&&i.push("--protocol="+this.protocol),this.flagsAllEnabled&&this.flagsAll&&i.push("--flags-all="+this.flagsAll),this.additionalParametersEnabled&&this.additionalParameters&&i.push(this.additionalParameters),a=i.join(" ")):a=this.cmd,t.filterOptions(a)},s.prototype.inputExclusions=function(){var e;return e="","builder"===this["interface"]?this.additionalExclusionsCmdEnabled&&(e=this.additionalExclusionsCmd):e=this.exclusionsCmd,e=t.filterOptions(e),_.compact(e.split(/\s+(?:OR|\|\|)\s+/i))},s.prototype.outputCommand=function(t,e,s){switch(null==s&&(s=!1),this.output){case"rwcut":return this.outputRwcutCommand(t,e,s);case"rwstats":return this.outputRwstatsCommand(t,e,s);case"rwcount":return this.outputRwcountCommand(t,e,s)}},s.prototype.outputRwcutCommand=function(e,s,i){var n,r,a,o,h,u;return null==i&&(i=!1),r=[],this.sortField&&(h=["--fields="+this.sortField],this.sortReverse&&h.push("--reverse"),e.siteConfigFile&&h.push("--site-config-file="+e.siteConfigFile),u=h.join(" "),u=t.filterOptions(u),r.push("rwsort "+u)),a=["--num-recs="+s.numRecs,"--start-rec-num="+this.startRecNum,"--delimited"],this.fields.length&&a.push("--fields="+_.intersection(this.fieldsOrder,this.fields).join(",")),e.siteConfigFile&&a.push("--site-config-file="+e.siteConfigFile),o=a.join(" "),o=t.filterOptions(o),r.push("rwcut "+o),r[0]+=" "+(e.dataTempdir||"/tmp")+"/"+this._id+".rwf",n=r.join(" | "),e.isSSH&&!i&&(n=e.wrapCommand(n)),n},s.prototype.outputRwstatsCommand=function(s,i,n){var r,a,o,h,u,p,l,d,c,f,m,w;if(null==n&&(n=!1),a=["--delimited"],"builder"===this["interface"]){if(h=a,this.rwstatsFields.length&&h.push("--fields="+_.intersection(this.rwstatsFieldsOrder,this.rwstatsFields).join(",")),p=this.rwstatsValues.slice(0),l=this.rwstatsValuesOrder.slice(0),this.rwstatsPrimaryValue&&(p.unshift(this.rwstatsPrimaryValue),l.unshift(this.rwstatsPrimaryValue)),p.length){for(c=_.intersection(l,p),o=f=0,m=c.length;m>f;o=++f)d=c[o],e.call(t.rwstatsValues,d)<0&&(c[o]="distinct:"+d);h.push("--values="+c.join(",")),w=c[0],e.call(t.rwstatsValues,w)<0&&h.push("--no-percents")}switch(h.push("--"+this.rwstatsDirection),this.rwstatsMode){case"count":h.push("--count="+this.rwstatsCountModeValue);break;case"threshold":h.push("--threshold="+this.rwstatsThresholdModeValue);break;case"percentage":h.push("--percentage="+this.rwstatsPercentageModeValue)}this.rwstatsBinTimeEnabled&&h.push(this.rwstatsBinTime?"--bin-time="+this.rwstatsBinTime:"--bin-time"),s.siteConfigFile&&h.push("--site-config-file="+s.siteConfigFile),u=h.join(" ")}else u=this.rwstatsCmd+" "+a.join(" "),u=t.filterOptions(u);return r="rwstats "+u,r+=" "+(s.dataTempdir||"/tmp")+"/"+this._id+".rwf",s.isSSH&&!n&&(r=s.wrapCommand(r)),r},s.prototype.outputRwcountCommand=function(e,s,i){var n,r,a,o,h,u,p,l,d,c,f;return null==i&&(i=!1),r=["--delimited","--no-titles"],"builder"===this["interface"]?(u=r,this.rwcountBinSizeEnabled&&u.push("--bin-size="+this.rwcountBinSize),this.rwcountLoadSchemeEnabled&&u.push("--load-scheme="+this.rwcountLoadScheme),this.rwcountSkipZeroes&&u.push("--skip-zeroes"),e.siteConfigFile&&u.push("--site-config-file="+e.siteConfigFile),p=u.join(" ")):p=this.rwcountCmd+" "+r.join(" "),p=t.filterOptions(p),n="rwcount "+p,n+=" "+(e.dataTempdir||"/tmp")+"/"+this._id+".rwf","table"===this.presentation&&(this.sortField&&(a=t.rwcountFields.indexOf(this.sortField),d="--field-separator=\\| --key=+"+(a+1)+"n"+(this.sortReverse?"r":""),d=t.filterOptions(d,"\\\\\\|\\+"),l="sort "+d,n+=" | "+l),s.numRecs&&(h="--lines="+(this.startRecNum+s.numRecs-1),h=t.filterOptions(h),o="head "+h,f="--lines="+s.numRecs,f=t.filterOptions(f),c="tail "+f,n+=" | "+o+" | "+c)),e.isSSH&&!i&&(n=e.wrapCommand(n)),n},s.prototype.rwstatsCountModeValueIsEnabled=function(){return"count"===this.rwstatsMode},s.prototype.rwstatsThresholdModeValueIsEnabled=function(){return"threshold"===this.rwstatsMode},s.prototype.rwstatsPercentageModeValueIsEnabled=function(){return"percentage"===this.rwstatsMode},s.prototype.availableChartTypes=function(){return t.availableChartTypes[this.output]},s.prototype.path=function(){return"/query/"+this._id},s}(),t.IPSet=function(){function t(t){_.extend(this,t)}return t.prototype.displayName=function(){return this.name||"#"+this._id},t.prototype.objectSelectName=function(){return this.displayName()},t.prototype.objectSelectValue=function(){return this._id},t.prototype.path=function(){return"/ipset/"+this._id},t}(),t.Tuple=function(){function t(t){_.extend(this,t)}return t.prototype.displayName=function(){return this.name||"#"+this._id},t.prototype.objectSelectName=function(){return this.displayName()},t.prototype.objectSelectValue=function(){return this._id},t.prototype.path=function(){return"/tuple/"+this._id},t}(),t.Transformations={user:function(e){return e instanceof t.User||!e?e:new t.User(e)},config:function(e){return e instanceof t.Config||!e?e:new t.Config(e)},query:function(e){return e instanceof t.Query||!e?e:new t.Query(e)},ipset:function(e){return e instanceof t.IPSet||!e?e:new t.IPSet(e)},tuple:function(e){return e instanceof t.Tuple||!e?e:new t.Tuple(e)}}}(); !function(){__coffeescriptShare="object"==typeof __coffeescriptShare?__coffeescriptShare:{};var e=__coffeescriptShare;Template.changePasswordAlertButtonsPanel.helpers,Template.changePasswordAlertButtonsPanel.rendered=function(){},Template.changePasswordAlertButtonsPanel.events({"click .change-button":function(e,t){return $(e.currentTarget).closest(".alert-message").find("form").submit()}})}(); @@ -399,7 +399,7 @@ queue:!1,duration:e.duration,easing:e.easing,complete:function(){0===a.to.opacit !function(){__coffeescriptShare="object"==typeof __coffeescriptShare?__coffeescriptShare:{};var e=__coffeescriptShare;Template.login.rendered=function(){var r,a;return r=this.$(".signin form"),r.validate({rules:{email:{required:!0,email:!0},password:{required:!0,minlength:4}},messages:i18n.t("forms.login.messages",{returnObjectTrees:!0}),submitHandler:function(a){var o,s;return o=$(".email",a).val().toLowerCase(),s=$(".password",a).val(),Meteor.loginWithPassword(o,s,function(a){return a?r.validate().showErrors({password:i18n.t("serverErrors."+a.reason)}):($(document.body).trigger("popup.hide"),e.loginCallback())})}}),a=this.$(".signup form"),a.validate({rules:{email:{required:!0,email:!0},password:{required:!0,minlength:4},passwordAgain:{required:!0,equalTo:".signup .password"}},messages:i18n.t("forms.login.messages",{returnObjectTrees:!0}),submitHandler:function(r){var o,s;return o=$(".email",r).val().toLowerCase(),s=$(".password",r).val(),Accounts.createUser({email:o,password:s},function(r){return r?a.validate().showErrors({password:i18n.t("serverErrors."+r.reason)}):($(document.body).trigger("popup.hide"),e.loginCallback())})}}),e.isDebug?(a.find(".email").val(Random.id()+"@flowbat.com"),a.find(".password").val("asdfasdf"),a.find(".passwordAgain").val("asdfasdf")):void 0},Template.login.events({"click .sign-in-with-google":grab(function(r,a){return Meteor.loginWithGoogle({},e.loginCallback)}),"click .forgot-password":grab(function(e,r){return UI.insert(UI.renderWithData(Template.alert,{name:i18n.t("forms.login.passwordForgot.alert.name"),descriptionTemplateName:"forgotPasswordAlertDescription",descriptionTemplateData:{},buttonPanelTemplateName:"forgotPasswordAlertButtonsPanel",buttonPanelTemplateData:{}}),document.body)})})}(); -!function(){__coffeescriptShare="object"==typeof __coffeescriptShare?__coffeescriptShare:{};var e=__coffeescriptShare;Template.navbar.helpers,Template.navbar.rendered=function(){},Template.navbar.events({"click .create-quick-query":grab(function(r,t){var c;return c=e.Queries.insert({isQuick:!0}),Router.go("/query/"+c)}),"click .logout":grab(function(e,r){return Meteor.logout()})})}(); +!function(){__coffeescriptShare="object"==typeof __coffeescriptShare?__coffeescriptShare:{};var e=__coffeescriptShare;Template.navbar.helpers,Template.navbar.rendered=function(){},Blaze._allowJavascriptUrls(),Template.navbar.events({"click .create-quick-query":grab(function(r,t){var a;return a=e.Queries.insert({isQuick:!0}),Router.go("/query/"+a)}),"click .logout":grab(function(e,r){return Meteor.logout()})})}(); !function(){__coffeescriptShare="object"==typeof __coffeescriptShare?__coffeescriptShare:{};var e=__coffeescriptShare;Template.notFound.helpers,Template.notFound.rendered=function(){},Template.notFound.events}(); @@ -437,7 +437,7 @@ var XRegExp;XRegExp=XRegExp||function(e){"use strict";function t(e,t,n){var r;fo !function(){__coffeescriptShare="object"==typeof __coffeescriptShare?__coffeescriptShare:{};var e=__coffeescriptShare;i18n.init({resStore:{},fallbackLng:"en",interpolationPrefix:"{{",interpolationSuffix:"}}"})}(); -!function(){__coffeescriptShare="object"==typeof __coffeescriptShare?__coffeescriptShare:{};var e=__coffeescriptShare;i18n.addResourceBundle("en",{name:"English",forms:{login:{email:"Email",password:"Password",passwordAgain:"Password again",forgotPassword:"Forgot password?",signup:"Let's go!",login:"Login",isLoggingIn:"Logging in...",messages:{email:{required:"Please specify your email",email:"Doesn't seem to be valid email"},password:{required:"Please specify your password",minlength:"Password should have at least 4 characters"},passwordAgain:{required:"Please repeat your password",equalTo:"The passwords should match"}},passwordForgot:{link:"Forgot password",alert:{name:"Reset password",emailPlaceholder:"Your email",reset:"Reset",errors:{userNotFound:"Account with that email does not exists."}}},passwordReset:{alert:{name:"Reset password",passwordPlaceholder:"New password",reset:"Reset",errors:{tokenNotFound:"Request is expired, try again."}}}},invite:{setPassword:"Set your password to begin using the application:"},profile:{header:"Profile settings",email:"Email address",emailPlaceholder:"Email address",name:"Name and surname",namePlaceholder:"Name and surname",password:"Password",passwordPlaceholder:"Password",passwordChange:{link:"Change password",alert:{name:"Change password",oldPasswordPlaceholder:"Old password",newPasswordPlaceholder:"New password",change:"Change",errors:{incorrectPassword:"Please specify correct old password"}}},phone:"Phone for SMS reminders",phonePlaceholder:"With country code; e.g. +1 260 123 45 67",phoneVerifyToReceiveSmsReminders:"Verify your number to receive SMS reminders.",phoneIsVerified:"This phone number is verified.",phoneSendVerificationCode:"Send verification code",youCanResendVerificationCodeInSomeMinutes:"You may request another verification code in {{minutes}} minutes.",phoneVerificationCodePlaceholder:"Verification code",phoneVerification:"Verification of {{phone}}",phoneVerify:"Verify",language:"Language",image:"Avatar",group:"Group",mode:"Mode",wrongVerificationCode:"Verification code doesn't match.",messages:{email:{required:"Email is required.",email:"Please enter a valid email address.",uniqueEmail:"Email already exists."},name:{required:"Name is required."},password:{required:"Password is required."},group:{required:"Group is required."},inserted:"User added successfully.",saved:"User updated successfully."}}},serverErrors:{"User not found":"User not found","Email already exists":"Email already exists","Incorrect password":"Incorrect password","User has no password set":"Please, follow the link from the invitation email and set a new password","Token expired":"Invitation link has expired"},"interface":{create:"Create",insert:"Add",update:"Edit",remove:"Delete",save:"Save",cancel:"Cancel",changesAreSavedAutomatically:"All changes are saved automatically."},rwcut:{fields:{sIP:"Source IP",dIP:"Destination IP",aIP:"Any IP",sPort:"Source port",dPort:"Destination port",aPort:"Any port",protocol:"IP protocol",pro:"$t(rwcut.fields.protocol)",packets:"Packet count",bytes:"Byte count",flags:"TCP flags",sTime:"Starting time",duration:"Duration",dur:"$t(rwcut.fields.duration)",eTime:"End time",sensor:"Sensor",sen:"$t(rwcut.fields.sensor)","class":"Sensor class",scc:"Source country",dcc:"Destination country",initialFlags:"Initial flags",sessionFlags:"Session flags",application:"Application",type:"Sensor type","sTime+msec":"starting time of flow including milliseconds (milliseconds are always displayed)","eTime+msec":"end time of flow including milliseconds (milliseconds are always displayed)","dur+msec":"duration of flow including milliseconds (milliseconds are always displayed)",iType:"ICMP type",iCode:"ICMP code",icmpTypeCode:"ICMP type & code",Records:"Records",Packets:"Packets",Bytes:"Bytes","cumul_%":"% Cumulative",Date:"Bin date and time"}},users:{fields:{username:"Username",email:"Email",name:"Name",group:"Group",actions:"Actions"},removeAlert:{name:"Delete user",description:"Are you sure you want to delete user?",remove:"Delete"}},groups:{admin:"Admin",analyst:"Analyst"}})}(); +!function(){__coffeescriptShare="object"==typeof __coffeescriptShare?__coffeescriptShare:{};var e=__coffeescriptShare;i18n.addResourceBundle("en",{name:"English",forms:{login:{email:"Email",password:"Password",passwordAgain:"Password again",forgotPassword:"Forgot password?",signup:"Let's go!",login:"Login",isLoggingIn:"Logging in...",messages:{email:{required:"Please specify your email",email:"Doesn't seem to be valid email"},password:{required:"Please specify your password",minlength:"Password should have at least 4 characters"},passwordAgain:{required:"Please repeat your password",equalTo:"The passwords should match"}},passwordForgot:{link:"Forgot password",alert:{name:"Reset password",emailPlaceholder:"Your email",reset:"Reset",errors:{userNotFound:"Account with that email does not exists."}}},passwordReset:{alert:{name:"Reset password",passwordPlaceholder:"New password",reset:"Reset",errors:{tokenNotFound:"Request is expired, try again."}}}},invite:{setPassword:"Set your password to begin using the application:"},profile:{header:"Profile settings",email:"Email address",emailPlaceholder:"Email address",name:"Name and surname",namePlaceholder:"Name and surname",password:"Password",passwordPlaceholder:"Password",passwordChange:{link:"Change password",alert:{name:"Change password",oldPasswordPlaceholder:"Old password",newPasswordPlaceholder:"New password",change:"Change",errors:{incorrectPassword:"Please specify correct old password"}}},phone:"Phone for SMS reminders",phonePlaceholder:"With country code; e.g. +1 260 123 45 67",phoneVerifyToReceiveSmsReminders:"Verify your number to receive SMS reminders.",phoneIsVerified:"This phone number is verified.",phoneSendVerificationCode:"Send verification code",youCanResendVerificationCodeInSomeMinutes:"You may request another verification code in {{minutes}} minutes.",phoneVerificationCodePlaceholder:"Verification code",phoneVerification:"Verification of {{phone}}",phoneVerify:"Verify",language:"Language",image:"Avatar",group:"Group",mode:"Mode",wrongVerificationCode:"Verification code doesn't match.",messages:{email:{required:"Email is required.",email:"Please enter a valid email address.",uniqueEmail:"Email already exists."},name:{required:"Name is required."},password:{required:"Password is required."},group:{required:"Group is required."},inserted:"User added successfully.",saved:"User updated successfully."}}},serverErrors:{"User not found":"User not found","Email already exists":"Email already exists","Incorrect password":"Incorrect password","User has no password set":"Please, follow the link from the invitation email and set a new password","Token expired":"Invitation link has expired"},"interface":{create:"Create",insert:"Add",update:"Edit",remove:"Delete",save:"Save",cancel:"Cancel",changesAreSavedAutomatically:"All changes are saved automatically."},rwcut:{fields:{sIP:"Source IP",dIP:"Destination IP",aIP:"Any IP",sPort:"Source port",dPort:"Destination port",aPort:"Any port",protocol:"IP protocol",pro:"$t(rwcut.fields.protocol)",packets:"Packet count",bytes:"Byte count",flags:"TCP flags",sTime:"Starting time",duration:"Duration",dur:"$t(rwcut.fields.duration)",eTime:"End time",sensor:"Sensor",sen:"$t(rwcut.fields.sensor)","class":"Sensor class",scc:"Source country",dcc:"Destination country",initialFlags:"Initial flags",sessionFlags:"Session flags",application:"Application",type:"Flow type","sTime+msec":"starting time of flow including milliseconds (milliseconds are always displayed)","eTime+msec":"end time of flow including milliseconds (milliseconds are always displayed)","dur+msec":"duration of flow including milliseconds (milliseconds are always displayed)",iType:"ICMP type",iCode:"ICMP code",icmpTypeCode:"ICMP type & code",Records:"Records",Packets:"Packets",Bytes:"Bytes","cumul_%":"% Cumulative",Date:"Bin date and time"}},field:{definitions:{sIP:"Source IP address. These can be specified during input as IP addresses or CIDR notation.",dIP:"Destination IP address. These can be specified during input as IP addresses or CIDR notation.",aIP:"Matches source or destination IP address. These can be specified during input as IP addresses or CIDR notation.",sPort:"Source ports can be specified during input as individual ports or hypenated ranges (IE: 0-1024)",dPort:"Destination ports can be specified during input as individual ports or hypenated ranges (IE: 0-1024)",aPort:"This will match against records with a source or destination port matching this value or range (IE: 0-1024).",protocol:"Pass the record if its IP Suite Protocol is in this INTEGER_LIST, possible values are 0-255.",pro:"$t(rwcut.fields.protocol)",packets:"Pass the record if its packet count is in this INTEGER_RANGE or value.",bytes:"Pass the record if its average bytes per packet count (bytes/packet) is in this DECIMAL_RANGE.",flags:"Pass the record if any of the HIGH_SET/MASK_SET pairs is true when looking at the bitwise OR of the TCP flags across all packets in the flow.",sTime:"Starting time of flow (seconds resolution).",duration:"Duration of flow (seconds resolution).",dur:"$t(rwcut.fields.duration)",eTime:"End time of the flow (seconds resolution).",sensor:"Name or ID of the sensor where the flow was collected.",sen:"$t(rwcut.fields.sensor)","class":"Binning by class and/or type equates to binning by the integer value used internally to represent the class/type pair. See the rwflowpack configuration.",scc:"This is filtering or grouping by source country code. The source country code refers to the country code associated with the source address per flow record.",dcc:"This is filtering or grouping by destination country code. The destination country code refers to the country code associated with the destination address per flow record.",initialFlags:"Pass the record if the initial HIGH_SET/MASK_SET pairs is true when looking at the bitwise OR of the TCP flags across the FIRST packet in the flow.",sessionFlags:"Pass the record if any of the HIGH_SET/MASK_SET pairs is true when looking at the bitwise OR of the TCP flags across all packets in the flow, excluding the first.",application:"The application value is the port number that is traditionally used for that type of traffic but is based on packet inspection by the generator. If the application cannot be determined, a 0 is used. Not all flow generators will inspect data to this level.",type:"Flow type. Types are defined in silk.conf, they typically refer to the direction of the flow. Examples include; int2","sTime+msec":"starting time of flow including milliseconds (milliseconds are always displayed)","eTime+msec":"end time of flow including milliseconds (milliseconds are always displayed)","dur+msec":"duration of flow including milliseconds (milliseconds are always displayed)",iType:"Pass the record if its ICMP (or ICMPv6) type is in this INTEGER_LIST; possible values 0-255.",iCode:"Pass the record if its ICMP (or ICMPv6) code is in this INTEGER_LIST; possible values 0-255.",icmpTypeCode:"ICMP type & code.",Records:"In rwstats, count the number of flow records that mapped to each bin.",Packets:"In rwstats, sum the number of packets across all records that mapped to each bin.",Bytes:"In rwstats, sum the number of bytes across all records that mapped to each bin.","cumul_%":"Cumulative-percentage",Date:"Bin date and time"}},users:{fields:{username:"Username",email:"Email",name:"Name",group:"Group",actions:"Actions"},removeAlert:{name:"Delete user",description:"Are you sure you want to delete user?",remove:"Delete"}},groups:{admin:"Admin",analyst:"Analyst"}})}(); !function(){__coffeescriptShare="object"==typeof __coffeescriptShare?__coffeescriptShare:{};var e=__coffeescriptShare;e.Queries=window.Queries=new Meteor.Collection("queries",{transform:e.Transformations.query}),e.IPSets=window.IPSets=new Meteor.Collection("ipsets",{transform:e.Transformations.ipset}),e.Tuples=window.Tuples=new Meteor.Collection("tuples",{transform:e.Transformations.tuple}),e.Configs=window.Configs=new Meteor.Collection("configs",{transform:e.Transformations.config})}(); @@ -459,7 +459,7 @@ var XRegExp;XRegExp=XRegExp||function(e){"use strict";function t(e,t,n){var r;fo !function(){__coffeescriptShare="object"==typeof __coffeescriptShare?__coffeescriptShare:{};var e=__coffeescriptShare;Deps.autorun(function(t){return e.queriesHandle.ready()?(e.Queries.find({isOutputStale:!0}).forEach(function(t){return e.Queries.update(t._id,{$set:{isOutputStale:!0}})}),t.stop()):void 0})}(); -!function(){__coffeescriptShare="object"==typeof __coffeescriptShare?__coffeescriptShare:{};var e=__coffeescriptShare,r=[].indexOf||function(e){for(var r=0,t=this.length;t>r;r++)if(r in this&&this[r]===e)return r;return-1};UI.registerHelper("fieldI18nString",function(){return"rwcut.fields."+this.trim()}),UI.registerHelper("fieldIsSelected",function(e,t){var i;return i=this.toString(),r.call(e[t],i)>=0}),UI.registerHelper("currentConfig",function(){return e.Configs.findOne()}),UI.registerHelper("currentTemplateName",function(){return Router.current().lookupTemplate()})}(); +!function(){__coffeescriptShare="object"==typeof __coffeescriptShare?__coffeescriptShare:{};var e=__coffeescriptShare,r=[].indexOf||function(e){for(var r=0,t=this.length;t>r;r++)if(r in this&&this[r]===e)return r;return-1};UI.registerHelper("fieldI18nString",function(){return"rwcut.fields."+this.trim()}),UI.registerHelper("fieldDefinitions",function(){return"field.definitions."+this.trim()}),UI.registerHelper("fieldIsSelected",function(e,t){var i;return i=this.toString(),r.call(e[t],i)>=0}),UI.registerHelper("currentConfig",function(){return e.Configs.findOne()}),UI.registerHelper("currentTemplateName",function(){return Router.current().lookupTemplate()})}(); !function(){__coffeescriptShare="object"==typeof __coffeescriptShare?__coffeescriptShare:{};var e=__coffeescriptShare;e.Pivoting={fields2properties:{sIP:"saddress",dIP:"daddress",aIP:"anyAddress",sPort:"sport",dPort:"dport",aPort:"aport",protocol:"protocol",flags:"flagsAll",sTime:"startDate",eTime:"endDate",aTime:"activeTime",sensor:"sensor",scc:"scc",dcc:"dcc",type:"type"},fields2options:{sIP:"saddress",dIP:"daddress",aIP:"any-address",sPort:"sport",dPort:"dport",aPort:"aport",protocol:"protocol",pro:"protocol",packets:"packets",bytes:"bytes",flags:"flags-all",duration:"duration",dur:"duration",sTime:"start-date",eTime:"end-date",aTime:"active-time",sensor:"sensor",sen:"sensor","class":"class",scc:"scc",dcc:"dcc",initialFlags:"flags-initial",sessionFlags:"flags-session",application:"application",type:"type","sTime+msec":"start-date","eTime+msec":"end-date","dur+msec":"duration",iType:"icmp-type",iCode:"icmp-code"},execute:function(s,t,a){var i,c;switch(t){case"flags":case"initialFlags":case"sessionFlags":a=a+"/"+a;break;case"sTime":case"eTime":a=moment.utc(a,"YYYY/MM/DDTHH:mm:ss.SSS").format("YYYY/MM/DD:HH");break;case"type":case"scc":case"dcc":a=[a]}if(i={},"builder"===s["interface"]?(c=e.Pivoting.fields2properties[t],c||(c="additionalParameters",a=this.replace(s.additionalParameters,e.Pivoting.fields2options[t],a)),i[c+"Enabled"]=!0,i[c]=a):i.cmd=this.replace(s.cmd,e.Pivoting.fields2options[t],a),e.Queries.update(s._id,{$set:i}),"builder"===s["interface"])switch(t){case"type":case"scc":case"dcc":return _.defer(function(){return $(".query-"+t+"-editor").trigger("chosen:updated")})}},replace:function(e,s,t){var a,i;return a=new RegExp("--"+s+"=[^\\s]+","i"),i="--"+s+"="+t,e.match(a)?e.replace(a,i):e+" "+i}}}(); diff --git a/private/bundle/programs/web.browser/program.json b/private/bundle/programs/web.browser/program.json index 142479d..fda3b24 100644 --- a/private/bundle/programs/web.browser/program.json +++ b/private/bundle/programs/web.browser/program.json @@ -2,22 +2,22 @@ "format": "web-program-pre1", "manifest": [ { - "path": "1e322250cb8e06a7df65d83b477136b7bbff504f.js", + "path": "b55cd89ecbf81d1372b4e1ed02e0e2ca813ec38f.js", "where": "client", "type": "js", "cacheable": true, - "url": "/1e322250cb8e06a7df65d83b477136b7bbff504f.js", - "size": 1098924, - "hash": "1e322250cb8e06a7df65d83b477136b7bbff504f" + "url": "/b55cd89ecbf81d1372b4e1ed02e0e2ca813ec38f.js", + "size": 1126909, + "hash": "b55cd89ecbf81d1372b4e1ed02e0e2ca813ec38f" }, { - "path": "5e50bc1ff2730b927bd5a8843b8180b18b6fba0e.css", + "path": "40985797a98c80d720d8ea9e7852aa5ed0291e35.css", "where": "client", "type": "css", "cacheable": true, - "url": "/5e50bc1ff2730b927bd5a8843b8180b18b6fba0e.css?meteor_css_resource=true", - "size": 245223, - "hash": "5e50bc1ff2730b927bd5a8843b8180b18b6fba0e" + "url": "/40985797a98c80d720d8ea9e7852aa5ed0291e35.css?meteor_css_resource=true", + "size": 245284, + "hash": "40985797a98c80d720d8ea9e7852aa5ed0291e35" }, { "path": "app/favicon.ico", @@ -178,8 +178,8 @@ "type": "asset", "cacheable": false, "url": "/images/logo.png", - "size": 7907, - "hash": "42f4d3e45d585691b57e8108e18739efe21b41b9" + "size": 8565, + "hash": "1a62aaff9572d3a166612759f5fb9d6c1c30eaca" }, { "path": "app/images/minus.png", diff --git a/private/bundle/settings/meteorsettings.json b/private/bundle/settings/meteorsettings.json index 4f4369e..8eef778 100755 --- a/private/bundle/settings/meteorsettings.json +++ b/private/bundle/settings/meteorsettings.json @@ -7,7 +7,7 @@ METEOR_SETTINGS='{ "secret": "" }, "public": { - "version": "FlowBAT v1.4.0", + "version": "FlowBAT v1.5.0", "isDebug": false, "googleAnalytics": { "property": "", diff --git a/private/bundle/settings/prod.sample.json b/private/bundle/settings/prod.sample.json index 40a8a4f..e5a96ff 100644 --- a/private/bundle/settings/prod.sample.json +++ b/private/bundle/settings/prod.sample.json @@ -7,7 +7,7 @@ "secret": "" }, "public": { - "version": "FlowBAT v1.4.0", + "version": "FlowBAT v1.5.0", "isDebug": false, "googleAnalytics": { "property": "", diff --git a/public/images/logo.png b/public/images/logo.png index d401103..b61e827 100644 Binary files a/public/images/logo.png and b/public/images/logo.png differ diff --git a/server/execution.coffee b/server/execution.coffee index 62b84bd..4094eb5 100644 --- a/server/execution.coffee +++ b/server/execution.coffee @@ -256,6 +256,8 @@ executeQuery = (query, config, profile, callback) -> result = stdout.trim() error = stderr.trim() code = if err then err.code else 0 + if error.indexOf("Rejected") isnt -1 + error = null callback(result, error, code) )) diff --git a/settings/dev.json b/settings/dev.json index c45bd5a..082ba1b 100644 --- a/settings/dev.json +++ b/settings/dev.json @@ -7,7 +7,7 @@ "secret": "" }, "public": { - "version": "FlowBAT v1.4.0", + "version": "FlowBAT v1.5.0", "isDebug": false, "googleAnalytics": { "property": "", diff --git a/settings/meteorsettings.json b/settings/meteorsettings.json index 4f4369e..8eef778 100755 --- a/settings/meteorsettings.json +++ b/settings/meteorsettings.json @@ -7,7 +7,7 @@ METEOR_SETTINGS='{ "secret": "" }, "public": { - "version": "FlowBAT v1.4.0", + "version": "FlowBAT v1.5.0", "isDebug": false, "googleAnalytics": { "property": "", diff --git a/settings/prod.sample.json b/settings/prod.sample.json index 40a8a4f..e5a96ff 100644 --- a/settings/prod.sample.json +++ b/settings/prod.sample.json @@ -7,7 +7,7 @@ "secret": "" }, "public": { - "version": "FlowBAT v1.4.0", + "version": "FlowBAT v1.5.0", "isDebug": false, "googleAnalytics": { "property": "", diff --git a/support/silkanalysisonly.sh b/support/silkanalysisonly.sh new file mode 100644 index 0000000..d966637 --- /dev/null +++ b/support/silkanalysisonly.sh @@ -0,0 +1,168 @@ +#!/bin/bash + +# Automatic SiLK Installation Script +# Chris Sanders & Jason Smith + +exec > >(tee -a silkanalysisinstall.log) +exec 2> >(tee -a silkanalysisinstall.log >&2) + +silkversion=$(echo "3.11.0.1") +lfbversion=$(echo "1.7.1") +workingDir=$PWD + +ask() { + # http://djm.me/ask + while true; do + + if [ "${2:-}" = "Y" ]; then + prompt="Y/n" + default=Y + elif [ "${2:-}" = "N" ]; then + prompt="y/N" + default=N + else + prompt="y/n" + default= + fi + + # Ask the question + read -p "$1 [$prompt] " REPLY + + # Default? + if [ -z "$REPLY" ]; then + REPLY=$default + fi + + # Check if the reply is valid + case "$REPLY" in + Y|y) return 0 ;; + N|n) return 1 ;; + *) echo "You must give a y or n answer." ;; + esac + + done +} + +echo "$(tput setaf 6)This script will install the SiLK Analysis Toolset and dependencies only. This is useful for users that are only interacting with flow data that might reside on another device. If you wish to have full flow collection, use silkonabox.sh." +echo "You will be prompted to enter your password in order to gain the appropriate priviledges to perform this install." +echo "!!!!!An internet connection IS $(tput sgr0)$(tput setaf 1)required$(tput sgr0)$(tput setaf 6) in order to complete this installation!!!!!$(tput sgr0)" + +#Check if there is an internet connection +wget -q --tries=10 --timeout=20 --spider http://google.com +if [[ $? -eq 0 ]]; then + echo "$(tput setaf 2)It appears that you do have an internet connection.$(tput sgr0)" +else + echo "$(tput setaf 1)It appears that you do not have an internet connection! This installation will fail.$(tput sgr0)" + if ask "$(tput setaf 2)Do you want to try anyways?$(tput sgr0)$(tput setaf 1)Success is unlikely.$(tput sgr0)"; then + echo "" + else + echo "That was probably a good choice if this is your first time running this install." + exit 1 + fi +fi + +if ask "$(tput setaf 3)Do you wish to proceed?$(tput sgr0)"; then + echo +else + exit 1 +fi + +cd $workingDir + +echo "$(tput setaf 6)Checking installed packages...$(tput sgr0)" +sudo apt-get update -qq + +# Install Prerequisites +echo -e "$(tput setaf 6)Installing Prerequisites. This might require your password and take a few minutes.$(tput sgr0)" +sudo apt-get -qq -y install glib2.0 libglib2.0-dev libpcap-dev g++ python-dev make gcc + +if which rwp2yaf2silk > /dev/null; then + echo -e "$(tput setaf 2)It looks like SiLK might already be installed.$(tput sgr0)" + if ask "$(tput setaf 3)Do you wish to proceed and try installing anyways?$(tput sgr0)"; then + echo + else + exit 1 + fi + else + # Download and Extract SiLK Components + if [ ! -f libfixbuf-$lfbversion.tar.gz ]; then + echo -e "$(tput setaf 6)libfixbuf-$lfbversion.tar.gz not found. Downloading.$(tput sgr0)" + wget http://tools.netsa.cert.org/releases/libfixbuf-$lfbversion.tar.gz + else + if ask "$(tput setaf 3)libfixbuf-$lfbversion.tar.gz found. Remove original and download again?$(tput sgr0)"; then + echo + rm libfixbuf-$lfbversion.tar.gz + wget http://tools.netsa.cert.org/releases/libfixbuf-$lfbversion.tar.gz + fi + fi + if [ ! -f silk-$silkversion.tar.gz ]; then + echo -e "$(tput setaf 6)silk-$silkversion.tar.gz not found. Downloading.$(tput sgr0)" + wget http://tools.netsa.cert.org/releases/silk-$silkversion.tar.gz + else + if ask "$(tput setaf 3)silk-$silkversion.tar.gz found. Remove original and download again?$(tput sgr0)"; then + echo + rm silk-$silkversion.tar.gz + wget http://tools.netsa.cert.org/releases/silk-$silkversion.tar.gz + fi + fi + tar zxf libfixbuf-$lfbversion.tar.gz + tar zxf silk-$silkversion.tar.gz + + # Install Libfixbuf + echo -e "$(tput setaf 6)Building libfixbuf...$(tput sgr0)" + cd libfixbuf-$lfbversion/ + ./configure + make + sudo make install + + # Create Data Directory and Install SiLK + sudo mkdir /data + echo -e "$(tput setaf 6)Building SiLK...$(tput sgr0)" + cd ../silk-$silkversion/ + ./configure --with-libfixbuf=/usr/local/lib/pkgconfig/ --with-python + make + sudo make install + + echo "$(tput setaf 6)Cleaning up tar files...$(tput sgr0)" + rm ../libfixbuf-$lfbversion.tar.gz + rm ../silk-$silkversion.tar.gz + +# Configure SiLk + cat > silk.conf << "EOF" + /usr/local/lib + /usr/local/lib/silk +EOF + + sudo mv silk.conf /etc/ld.so.conf.d/ + sudo ldconfig + sudo cp site/twoway/silk.conf /data + + cat > sensors.conf << "EOF" + probe S0 ipfix + listen-on-port 18001 + protocol tcp + listen-as-host 127.0.0.1 + end probe + group my-network + ipblocks 192.168.0.0/16 # address of eth0. CHANGE THIS. + ipblocks 172.16.0.0/12 # other blocks you consider internal + ipblocks 10.0.0.0/8 # other blocks you consider internal + end group + sensor S0 + ipfix-probes S0 + internal-ipblocks @my-network + external-ipblocks remainder + end sensor +EOF + + sudo mv sensors.conf /data + +fi + +## Download country code database - These can be updated as needed via the commands below +wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz +gzip -d -c GeoIP.dat.gz | rwgeoip2ccmap --encoded-input > country_codes.pmap +sudo mv country_codes.pmap /usr/local/share/silk/ + +echo -e "$(tput setaf 2)SiLK installation finished..$(tput sgr0)" +exit 0 diff --git a/support/silkonabox.sh b/support/silkonabox.sh index 0567d0b..0582df9 100755 --- a/support/silkonabox.sh +++ b/support/silkonabox.sh @@ -7,7 +7,7 @@ exec > >(tee -a silkinstall.log) exec 2> >(tee -a silkinstall.log >&2) silkversion=$(echo "3.11.0.1") -yafversion=$(echo "2.8.0") +yafversion=$(echo "2.8.1") lfbversion=$(echo "1.7.1") workingDir=$PWD