urbanopt-scenario 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +25 -0
  3. data/.rdoc_options +36 -0
  4. data/.rspec +3 -0
  5. data/.rubocop.yml +10 -0
  6. data/.travis.yml +23 -0
  7. data/CHANGELOG.md +5 -0
  8. data/Gemfile +42 -0
  9. data/Jenkinsfile +10 -0
  10. data/LICENSE.md +27 -0
  11. data/RDOC_MAIN.md +39 -0
  12. data/README.md +39 -0
  13. data/Rakefile +51 -0
  14. data/deploy_docs.sh +5 -0
  15. data/doc_templates/LICENSE.md +27 -0
  16. data/doc_templates/README.md.erb +42 -0
  17. data/doc_templates/copyright_erb.txt +31 -0
  18. data/doc_templates/copyright_js.txt +4 -0
  19. data/doc_templates/copyright_ruby.txt +29 -0
  20. data/docs/.gitignore +3 -0
  21. data/docs/.vuepress/components/InnerJsonSchema.vue +84 -0
  22. data/docs/.vuepress/components/JsonSchema.vue +12 -0
  23. data/docs/.vuepress/components/ScenarioSchema.vue +12 -0
  24. data/docs/.vuepress/components/StaticLink.vue +8 -0
  25. data/docs/.vuepress/config.js +15 -0
  26. data/docs/.vuepress/highlight.js +8 -0
  27. data/docs/.vuepress/public/custom_rdoc_styles.css +74 -0
  28. data/docs/.vuepress/utils.js +17 -0
  29. data/docs/README.md +39 -0
  30. data/docs/package-lock.json +11791 -0
  31. data/docs/package.json +22 -0
  32. data/docs/schemas/scenario-schema.md +3 -0
  33. data/lib/measures/.rubocop.yml +5 -0
  34. data/lib/measures/default_feature_reports/LICENSE.md +27 -0
  35. data/lib/measures/default_feature_reports/README.md +56 -0
  36. data/lib/measures/default_feature_reports/README.md.erb +42 -0
  37. data/lib/measures/default_feature_reports/measure.rb +731 -0
  38. data/lib/measures/default_feature_reports/measure.xml +139 -0
  39. data/lib/measures/default_feature_reports/tests/USA_CO_Golden-NREL.724666_TMY3.epw +8768 -0
  40. data/lib/measures/default_feature_reports/tests/default_feature_reports_test.rb +238 -0
  41. data/lib/measures/default_feature_reports/tests/example_model.osm +4378 -0
  42. data/lib/urbanopt-scenario.rb +31 -0
  43. data/lib/urbanopt/scenario.rb +45 -0
  44. data/lib/urbanopt/scenario/default_reports.rb +40 -0
  45. data/lib/urbanopt/scenario/default_reports/construction_cost.rb +169 -0
  46. data/lib/urbanopt/scenario/default_reports/date.rb +97 -0
  47. data/lib/urbanopt/scenario/default_reports/end_use.rb +159 -0
  48. data/lib/urbanopt/scenario/default_reports/end_uses.rb +140 -0
  49. data/lib/urbanopt/scenario/default_reports/feature_report.rb +207 -0
  50. data/lib/urbanopt/scenario/default_reports/location.rb +99 -0
  51. data/lib/urbanopt/scenario/default_reports/logger.rb +44 -0
  52. data/lib/urbanopt/scenario/default_reports/program.rb +261 -0
  53. data/lib/urbanopt/scenario/default_reports/reporting_period.rb +298 -0
  54. data/lib/urbanopt/scenario/default_reports/scenario_report.rb +276 -0
  55. data/lib/urbanopt/scenario/default_reports/schema/README.md +33 -0
  56. data/lib/urbanopt/scenario/default_reports/schema/scenario_csv_columns.txt +13 -0
  57. data/lib/urbanopt/scenario/default_reports/schema/scenario_schema.json +742 -0
  58. data/lib/urbanopt/scenario/default_reports/timeseries_csv.rb +231 -0
  59. data/lib/urbanopt/scenario/default_reports/validator.rb +97 -0
  60. data/lib/urbanopt/scenario/extension.rb +63 -0
  61. data/lib/urbanopt/scenario/logger.rb +42 -0
  62. data/lib/urbanopt/scenario/scenario_base.rb +79 -0
  63. data/lib/urbanopt/scenario/scenario_csv.rb +122 -0
  64. data/lib/urbanopt/scenario/scenario_datapoint_base.rb +162 -0
  65. data/lib/urbanopt/scenario/scenario_post_processor_base.rb +69 -0
  66. data/lib/urbanopt/scenario/scenario_post_processor_default.rb +97 -0
  67. data/lib/urbanopt/scenario/scenario_runner_base.rb +63 -0
  68. data/lib/urbanopt/scenario/scenario_runner_osw.rb +158 -0
  69. data/lib/urbanopt/scenario/simulation_dir_base.rb +90 -0
  70. data/lib/urbanopt/scenario/simulation_dir_osw.rb +261 -0
  71. data/lib/urbanopt/scenario/simulation_mapper_base.rb +47 -0
  72. data/lib/urbanopt/scenario/version.rb +35 -0
  73. data/urbanopt-scenario-gem.gemspec +36 -0
  74. metadata +227 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 70030416dd8b98440467e9be4e69be408b5880c6
4
+ data.tar.gz: d3bde1a5c429c1f09969720b74a86367eaa062af
5
+ SHA512:
6
+ metadata.gz: 7453d419578337962da52bfbbc521c4233a5f4662f976d750b30eb048f7811412c052f6afb95fdfbc4248379f861e73bdf518be99b42c1d2815f37f2209c03ab
7
+ data.tar.gz: a2d8f4588b3280f6fd6f1e14bd1ab6a4d2702140961bb4097e908251bbf84c29214cf018e6376f6ec64c5d27ace1f52a8d679378662fa080c95a35ea6326a093
@@ -0,0 +1,25 @@
1
+ .bundle/
2
+ /.yardoc
3
+ /.ruby-version
4
+ Gemfile.lock
5
+ /gems
6
+ /_yardoc/
7
+ /coverage/
8
+ /doc/
9
+ /pkg/
10
+ /spec/reports/
11
+ /spec/test/
12
+ /tmp/
13
+ /test/
14
+ /lib/measures/test_results
15
+ /lib/measures/*/tests/output
16
+
17
+ .rubocop*s3*
18
+
19
+ # rspec failure tracking
20
+ .rspec_status
21
+
22
+ # Ignore IDE files
23
+ /.idea
24
+ runner.conf
25
+
@@ -0,0 +1,36 @@
1
+ --- !ruby/object:RDoc::Options
2
+ encoding: UTF-8
3
+ static_path: []
4
+ rdoc_include:
5
+ - lib
6
+ charset: UTF-8
7
+ exclude:
8
+ - doc_templates
9
+ - docs
10
+ - lib/measures
11
+ - node_modules
12
+ - spec
13
+ - test
14
+ - Gemfile
15
+ - Gemfile.lock
16
+ - Jenkinsfile
17
+ - LICENSE.md
18
+ - README.md
19
+ - Rakefile
20
+ - urbanopt-scenario-gem.gemspec
21
+ - JSON
22
+ - Object
23
+ hyperlink_all: false
24
+ line_numbers: false
25
+ locale:
26
+ locale_dir: locale
27
+ locale_name:
28
+ main_page: RDOC_MAIN.md
29
+ output_decoration: true
30
+ op_dir: ./docs/.vuepress/public/rdoc
31
+ show_hash: false
32
+ tab_width: 8
33
+ template_stylesheets: ["./docs/.vuepress/public/custom_rdoc_styles.css"]
34
+ title:
35
+ visibility: :protected
36
+ webcvs:
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
@@ -0,0 +1,10 @@
1
+ AllCops:
2
+ Exclude:
3
+ - gems/**/*
4
+ - measures/**/*
5
+ - spec/files/**/measures/**/*
6
+
7
+
8
+ inherit_from:
9
+ - http://s3.amazonaws.com/openstudio-resources/styles/rubocop.yml
10
+
@@ -0,0 +1,23 @@
1
+ ---
2
+ sudo: false
3
+ language: ruby
4
+ #cache: bundler
5
+ rvm:
6
+ - 2.2.4
7
+ matrix:
8
+ include:
9
+ - env: OPENSTUDIO_VERSION=2.7.0 && OPENSTUDIO_SHA=544f363db5 && RUBYLIB=/usr/local/openstudio-2.7.0/Ruby:/usr/Ruby
10
+ before_install:
11
+ - gem install bundler -v '1.17'
12
+ - gem install bundler -v '~> 1.17'
13
+ install:
14
+ - bundle install
15
+ before_script:
16
+ - curl -sLO https://raw.githubusercontent.com/NREL/OpenStudio-server/develop/docker/deployment/scripts/install_openstudio.sh
17
+ - chmod +x install_openstudio.sh
18
+ - sudo ./install_openstudio.sh $OPENSTUDIO_VERSION $OPENSTUDIO_SHA
19
+ - sudo ./install_openstudio.sh $OPENSTUDIO_VERSION $OPENSTUDIO_SHA
20
+ script:
21
+ - bundle exec rake
22
+ - bundle exec rake
23
+
@@ -0,0 +1,5 @@
1
+ # URBANopt Scenario Gem
2
+
3
+ ## Version 0.1.0
4
+
5
+ * Initial release of scenario gem.
data/Gemfile ADDED
@@ -0,0 +1,42 @@
1
+ source 'http://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in urbanopt-scenario-gem.gemspec
4
+ gemspec
5
+
6
+ # Local gems are useful when developing and integrating the various dependencies.
7
+ # To favor the use of local gems, set the following environment variable:
8
+ # Mac: export FAVOR_LOCAL_GEMS=1
9
+ # Windows: set FAVOR_LOCAL_GEMS=1
10
+ # Note that if allow_local is true, but the gem is not found locally, then it will
11
+ # checkout the latest version (develop) from github.
12
+ allow_local = ENV['FAVOR_LOCAL_GEMS']
13
+
14
+ # Uncomment the extension and common measures gem if you need to test local development versions. Otherwise
15
+ # these are included in the model articulation gem.
16
+ #
17
+ # if allow_local && File.exist?('../OpenStudio-extension-gem')
18
+ # gem 'openstudio-extension', path: '../OpenStudio-extension-gem'
19
+ # elsif allow_local
20
+ # gem 'openstudio-extension', github: 'NREL/OpenStudio-extension-gem', branch: 'develop'
21
+ # end
22
+ #
23
+ # if allow_local && File.exist?('../openstudio-common-measures-gem')
24
+ # gem 'openstudio-common-measures', path: '../openstudio-common-measures-gem'
25
+ # elsif allow_local
26
+ # gem 'openstudio-common-measures', github: 'NREL/openstudio-common-measures-gem', branch: 'develop'
27
+ # end
28
+
29
+ if allow_local && File.exist?('../openstudio-model-articulation-gem')
30
+ gem 'openstudio-model-articulation', path: '../openstudio-model-articulation-gem'
31
+ elsif allow_local
32
+ gem 'openstudio-model-articulation', github: 'NREL/openstudio-model-articulation-gem', branch: 'develop'
33
+ end
34
+
35
+ if allow_local && File.exist?('../urbanopt-core-gem')
36
+ gem 'urbanopt-core', path: '../urbanopt-core-gem'
37
+ elsif allow_local
38
+ gem 'urbanopt-core', github: 'URBANopt/urbanopt-core-gem', branch: 'develop'
39
+ end
40
+
41
+ # simplecov has an unnecessary dependency on native json gem, use fork that does not require this
42
+ gem 'simplecov', github: 'NREL/simplecov'
@@ -0,0 +1,10 @@
1
+ //Jenkins pipelines are stored in shared libaries. Please see: https://github.com/tijcolem/nrel_cbci_jenkins_libs
2
+
3
+ @Library('cbci_shared_libs') _
4
+
5
+ // Build for PR to develop branch only.
6
+ if ((env.CHANGE_ID) && (env.CHANGE_TARGET) ) { // check if set
7
+
8
+ openstudio_extension_gems()
9
+
10
+ }
@@ -0,0 +1,27 @@
1
+ URBANopt, Copyright (c) 2019, Alliance for Sustainable Energy, LLC, and other
2
+ contributors. All rights reserved.
3
+
4
+ Redistribution and use in source and binary forms, with or without modification,
5
+ are permitted provided that the following conditions are met:
6
+
7
+ Redistributions of source code must retain the above copyright notice, this list
8
+ of conditions and the following disclaimer.
9
+
10
+ Redistributions in binary form must reproduce the above copyright notice, this
11
+ list of conditions and the following disclaimer in the documentation and/or other
12
+ materials provided with the distribution.
13
+
14
+ Neither the name of the copyright holder nor the names of its contributors may be
15
+ used to endorse or promote products derived from this software without specific
16
+ prior written permission.
17
+
18
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
19
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
21
+ IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
22
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
23
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
25
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
26
+ OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
27
+ OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,39 @@
1
+ # URBANopt Scenario Gem
2
+
3
+ ### [back to main docs](../)
4
+
5
+ The URBANopt Scenario Gem includes functionality for defining scenarios, running simulations, and post-processing results. User defined SimulationMapper classes translate each Feature to a SimulationDir which is a directory containing simulation input files. A ScenarioRunner is used to perform simulations for each SimulationDir. Finally, a ScenarioPostProcessor can run on a Scenario to generate scenario level results.
6
+
7
+ [RDoc Documentation](https://urbanopt.github.io/urbanopt-scenario-gem/)
8
+
9
+ ## Installation
10
+
11
+ Add this line to your application's Gemfile:
12
+
13
+ ```ruby
14
+ gem 'urbanopt-scenario'
15
+ ```
16
+
17
+ And then execute:
18
+
19
+ $ bundle install
20
+ $ bundle update
21
+
22
+ Or install it yourself as:
23
+
24
+ $ gem install 'urbanopt-scenario'
25
+
26
+ ## Testing
27
+
28
+ Check out the repository and then execute:
29
+
30
+ $ bundle install
31
+ $ bundle update
32
+ $ bundle exec rake
33
+
34
+ ## Releasing
35
+
36
+ * Update change log
37
+ * Update version in `/lib/urbanopt/scenario/version.rb`
38
+ * Merge down to master
39
+ * run `rake release` from master
@@ -0,0 +1,39 @@
1
+ # URBANopt Scenario Gem
2
+
3
+ The URBANopt Scenario Gem includes functionality for defining scenarios, running simulations, and post-processing results. User defined SimulationMapper classes translate each Feature to a SimulationDir which is a directory containing simulation input files. A ScenarioRunner is used to perform simulations for each SimulationDir. Finally, a ScenarioPostProcessor can run on a Scenario to generate scenario level results.
4
+
5
+ [RDoc Documentation](https://urbanopt.github.io/urbanopt-scenario-gem/)
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ ```ruby
12
+ gem 'urbanopt-scenario'
13
+ ```
14
+
15
+ And then execute:
16
+
17
+ $ bundle install
18
+ $ bundle update
19
+
20
+ Or install it yourself as:
21
+
22
+ $ gem install 'urbanopt-scenario'
23
+
24
+ ## Testing
25
+
26
+ Check out the repository and then execute:
27
+
28
+ $ bundle install
29
+ $ bundle update
30
+ $ bundle exec rake
31
+
32
+ ## Releasing
33
+
34
+ * Update CHANGELOG.md
35
+ * Run `rake rubocop:auto_correct`
36
+ * Update version in `/lib/urbanopt/scenario/version.rb`
37
+ * Create PR to master, after tests and reviews complete, then merge
38
+ * Locally - from the master branch, run `rake release`
39
+ * On GitHub, go to the releases page and update the latest release tag. Name it “Version x.y.z” and copy the CHANGELOG entry into the description box.
@@ -0,0 +1,51 @@
1
+ # *********************************************************************************
2
+ # URBANopt, Copyright (c) 2019, Alliance for Sustainable Energy, LLC, and other
3
+ # contributors. All rights reserved.
4
+ #
5
+ # Redistribution and use in source and binary forms, with or without modification,
6
+ # are permitted provided that the following conditions are met:
7
+ #
8
+ # Redistributions of source code must retain the above copyright notice, this list
9
+ # of conditions and the following disclaimer.
10
+ #
11
+ # Redistributions in binary form must reproduce the above copyright notice, this
12
+ # list of conditions and the following disclaimer in the documentation and/or other
13
+ # materials provided with the distribution.
14
+ #
15
+ # Neither the name of the copyright holder nor the names of its contributors may be
16
+ # used to endorse or promote products derived from this software without specific
17
+ # prior written permission.
18
+ #
19
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20
+ # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21
+ # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
22
+ # IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
23
+ # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
24
+ # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25
+ # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
26
+ # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
27
+ # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
28
+ # OF THE POSSIBILITY OF SUCH DAMAGE.
29
+ # *********************************************************************************
30
+ #
31
+ require 'bundler/gem_tasks'
32
+ require 'rspec/core/rake_task'
33
+
34
+ RSpec::Core::RakeTask.new(:spec)
35
+
36
+ # Load in the rake tasks from the base extension gem
37
+ require 'openstudio/extension/rake_task'
38
+ require 'urbanopt/scenario'
39
+ rake_task = OpenStudio::Extension::RakeTask.new
40
+ rake_task.set_extension_class(URBANopt::Scenario::Extension)
41
+
42
+ require 'rubocop/rake_task'
43
+ RuboCop::RakeTask.new
44
+
45
+ task :clear_all do
46
+ Dir.glob(File.join(File.dirname(__FILE__), '/spec/test/example_scenario/*')).each do |f|
47
+ FileUtils.rm_rf(f)
48
+ end
49
+ end
50
+
51
+ task default: :spec
@@ -0,0 +1,5 @@
1
+ set -e
2
+ bundle exec rdoc --template-stylesheets ./docs/.vuepress/public/custom_rdoc_styles.css
3
+ npm run build --prefix docs
4
+ #npm run dev --prefix docs
5
+ npm run deploy --prefix docs
@@ -0,0 +1,27 @@
1
+ URBANopt, Copyright (c) 2019, Alliance for Sustainable Energy, LLC, and other
2
+ contributors. All rights reserved.
3
+
4
+ Redistribution and use in source and binary forms, with or without modification,
5
+ are permitted provided that the following conditions are met:
6
+
7
+ Redistributions of source code must retain the above copyright notice, this list
8
+ of conditions and the following disclaimer.
9
+
10
+ Redistributions in binary form must reproduce the above copyright notice, this
11
+ list of conditions and the following disclaimer in the documentation and/or other
12
+ materials provided with the distribution.
13
+
14
+ Neither the name of the copyright holder nor the names of its contributors may be
15
+ used to endorse or promote products derived from this software without specific
16
+ prior written permission.
17
+
18
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
19
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
21
+ IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
22
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
23
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
25
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
26
+ OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
27
+ OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,42 @@
1
+ <%#= README.md.erb is used to auto-generate README.md. %>
2
+ <%#= To manually maintain README.md throw away README.md.erb and manually edit README.md %>
3
+ ###### (Automatically generated documentation)
4
+
5
+ # <%= name %>
6
+
7
+ ## Description
8
+ <%= description %>
9
+
10
+ ## Modeler Description
11
+ <%= modelerDescription %>
12
+
13
+ ## Measure Type
14
+ <%= measureType %>
15
+
16
+ ## Taxonomy
17
+ <%= taxonomy %>
18
+
19
+ ## Arguments
20
+
21
+ <% arguments.each do |argument| %>
22
+ ### <%= argument[:display_name] %>
23
+ <%= argument[:description] %>
24
+ **Name:** <%= argument[:name] %>,
25
+ **Type:** <%= argument[:type] %>,
26
+ **Units:** <%= argument[:units] %>,
27
+ **Required:** <%= argument[:required] %>,
28
+ **Model Dependent:** <%= argument[:model_dependent] %>
29
+ <% end %>
30
+
31
+ <% if arguments.size == 0 %>
32
+ <%= "This measure does not have any user arguments" %>
33
+ <% end %>
34
+
35
+ <% if outputs.size > 0 %>
36
+ ## Outputs
37
+ <% output_names = [] %>
38
+ <% outputs.each do |output| %>
39
+ <% output_names << output[:display_name] %>
40
+ <% end %>
41
+ <%= output_names.join(", ") %>
42
+ <% end %>
@@ -0,0 +1,31 @@
1
+ <%
2
+ # *********************************************************************************
3
+ # URBANopt, Copyright (c) 2019, Alliance for Sustainable Energy, LLC, and other
4
+ # contributors. All rights reserved.
5
+ #
6
+ # Redistribution and use in source and binary forms, with or without modification,
7
+ # are permitted provided that the following conditions are met:
8
+ #
9
+ # Redistributions of source code must retain the above copyright notice, this list
10
+ # of conditions and the following disclaimer.
11
+ #
12
+ # Redistributions in binary form must reproduce the above copyright notice, this
13
+ # list of conditions and the following disclaimer in the documentation and/or other
14
+ # materials provided with the distribution.
15
+ #
16
+ # Neither the name of the copyright holder nor the names of its contributors may be
17
+ # used to endorse or promote products derived from this software without specific
18
+ # prior written permission.
19
+ #
20
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
21
+ # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
22
+ # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
23
+ # IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
24
+ # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
25
+ # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26
+ # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
27
+ # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
28
+ # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
29
+ # OF THE POSSIBILITY OF SUCH DAMAGE.
30
+ # *********************************************************************************
31
+ %>