text:
2.19.4 / 2023-01-23
==================

### Fixed

* Core: Fix memory leak via `config.timeoutHandler` from last async test. (Sergey Astapov)

2.19.3 / 2022-10-22
==================

### Fixed

* Assert: Restore how deepEqual treats imposter objects. (Timo Tijhof) [#1706](https://github.com/qunitjs/qunit/issues/1706)

2.19.2 / 2022-10-17
==================

### Changed

* Core: Faster diffing for `config.noglobals` by refactoring slow mutations. (Izel Nakri) [#1697](https://github.com/qunitjs/qunit/pull/1697)
* Assert: Improve performance of `QUnit.equiv()`. (Izel Nakri) [#1700](https://github.com/qunitjs/qunit/pull/1700)
* Assert: Faster deepEqual for Map values by avoiding typeEquiv calls. (Timo Tijhof)
* Assert: Faster deepEqual by reducing internal objectType checks. (Timo Tijhof)
* Assert: Faster deepEqual by using re-assignment for internal pairs. (Timo Tijhof)

### Fixed

* Core: Fix inaccurate count in reporter output after re-run. [#1687](https://github.com/qunitjs/qunit/issues/1687)
* CLI: Fix MaxListeners warning in long-running watch mode. [#1692](https://github.com/qunitjs/qunit/issues/1692)

2.19.1 / 2022-05-01
==================

### Fixed

* HTML Reporter: Restore float-clear for narrow viewports. [87c90ce2e0](https://github.com/qunitjs/qunit/commit/87c90ce2e0eb03f3d10b8cec07c0ac9b3709b0d7)

2.19.0 / 2022-04-28
==================

### Added

* CLI: Add `--module` option. (Shachar) [#1680](https://github.com/qunitjs/qunit/issues/1680)
* Core: Add `moduleId` to [`QUnit.begin()`](https://api.qunitjs.com/callbacks/QUnit.begin/) details object.

### Fixed

* Core: Fix event "runtime" data to be rounded to milliseconds.
* Core: Fix pretty stacktrace shortening to work on Windows.
* HTML Reporter: Faster toolbar setup by reusing `beginDetails.modules`.

2.18.2 / 2022-04-17
==================

### Changed

* HTML Reporter: Improve accessibility and design of the module filter. (Timo Tijhof) [#1664](https://github.com/qunitjs/qunit/issues/1664#issuecomment-1101007741)
* HTML Reporter: Improve fuzzy-matching of the module filter. (Timo Tijhof) [#1685](https://github.com/qunitjs/qunit/pull/1685)

### Fixed

* HTML Reporter: Faster rendering of module filter results. [#1685](https://github.com/qunitjs/qunit/pull/1685), [#1664](https://github.com/qunitjs/qunit/issues/1664)
* HTML Reporter: Fix retention of state over multiple module searches. [#1683](https://github.com/qunitjs/qunit/issues/1683)
* HTML Reporter: Fix runtime to be rounded in Chromium. [#1678](https://github.com/qunitjs/qunit/issues/1678)

2.18.1 / 2022-03-29
==================

### Fixed

* HTML Reporter: Fix source attribution for test definitions. [#1679](https://github.com/qunitjs/qunit/issues/1679)
* Core: Fix preconfig support in SpiderMonkey and other environments. [0befe2aafe](https://github.com/qunitjs/qunit/commit/0befe2aafe913704db958c472ed6f2a37ec8caaf)
* Core: Improve performance of async pauses with native Map when available. [aa7314b431](https://github.com/qunitjs/qunit/commit/aa7314b431db10d321109c78041747b681e1521c)

2.18.0 / 2022-02-15
==================

### Added

* Assert: New `assert.propContains()` for partial object comparison. (Izel Nakri) [#1668](https://github.com/qunitjs/qunit/pull/1668)
* Core: Add `QUnit.hooks` to globally add beforeEach and afterEach. (Timo Tijhof) [#1475](https://github.com/qunitjs/qunit/issues/1475)
* CLI: Add support for watching `.ts` files when TypeScript is used. (Timo Tijhof) [#1669](https://github.com/qunitjs/qunit/issues/1669)
* CLI: Add support for watching `.json`, `.cjs`, and `.mjs` files. [#1676](https://github.com/qunitjs/qunit/pull/1676)

### Fixed

* CLI: Fix ESM file imports on Windows to use file-protocol URLs. (Timo Tijhof) [#1667](https://github.com/qunitjs/qunit/issues/1667)
* CLI: Improve performance of watch mode by recursively ignoring directories. (Timo Tijhof) [#1676](https://github.com/qunitjs/qunit/pull/1676)

2.17.2 / 2021-09-19
==================

### Changed

* CLI: Reduce npm install size by 35 kB. (Timo Tijhof) [node-watch#115](https://github.com/yuanchuan/node-watch/pull/115)

### Fixed

* Core: Correctly ignore late tests after a nested `QUnit.module.only()` closure. (Steve McClure) [#1645](https://github.com/qunitjs/qunit/issues/1645)
* Core: Restore fake test for "No tests were run" message. (Timo Tijhof) [#1652](https://github.com/qunitjs/qunit/pull/1652)
* HTML Reporter: Restore URL parameter reading. (Timo Tijhof) [#1657](https://github.com/qunitjs/qunit/issues/1657)

2.17.1 / 2021-09-09
==================

### Fixed

* HTML Reporter: Fix `display: none` regression with the "global failure" message. (Timo Tijhof) [#1651](https://github.com/qunitjs/qunit/issues/1651)

2.17.0 / 2021-09-05
==================

### Added

* HTML Reporter: Add "Rerun failed tests" link. (Jan Buschtöns) [#1626](https://github.com/qunitjs/qunit/pull/1626)
* Core: New `error` event for bailing on uncaught errors. (Timo Tijhof) [#1638](https://github.com/qunitjs/qunit/pull/1638)

### Changed

* Core: Improve warning for incorrect hook usage to include module name. (Chris Krycho) [#1647](https://github.com/qunitjs/qunit/issues/1647)

### Deprecated

* Core: The internal `QUnit.onError` and `QUnit.onUnhandledRejection` callbacks are deprecated. [#1638](https://github.com/qunitjs/qunit/pull/1638)

  These were undocumented, but may have been used in a fork or other custom runner for QUnit.
  Switch to the supported [`QUnit.onUncaughtException`](https://api.qunitjs.com/extension/QUnit.onUncaughtException/) instead.

### Fixed

* Assert: Improve validation handling of `assert.throws()` and `assert.rejects()`. (Steve McClure) [#1637](https://github.com/qunitjs/qunit/issues/1637)
* Core: Ensure skipped child module hooks don't leak memory. (Ben Demboski) [#1650](https://github.com/qunitjs/qunit/pull/1650)
* Core: Fix bad module nesting when module closure throws global error. [#1478](https://github.com/qunitjs/qunit/issues/1478)
* Core: Fix reporting of uncaught errors during `QUnit.begin()`. (Timo Tijhof) [#1446](https://github.com/qunitjs/qunit/issues/1446)
* Core: Fix reporting of uncaught errors during or after `QUnit.done()`. (Timo Tijhof) [#1629](https://github.com/qunitjs/qunit/pull/1629)

2.16.0 / 2021-06-06
==================

### Added

* Core: New `QUnit.test.each()` method for data providers. (ventuno) [#1568](https://github.com/qunitjs/qunit/issues/1568)
* Core: New `failOnZeroTests` configuration option. (Brenden Palmer)
* Core: New `QUnit.reporters` interface. (Timo Tijhof) [f8948c9](https://github.com/qunitjs/qunit/commit/f8948c96fdcef0b0f96d27acaa59faacbabaf0f9) [js-reporters#133](https://github.com/js-reporters/js-reporters/issues/133)

  This introduces support for using the `tap` reporter in a browser.
  This was previously limited to the CLI.

### Changed

* Assert: Indicate which test a drooling `assert.async()` callback came from. (Steve McClure) [#1599](https://github.com/qunitjs/qunit/pull/1599)

### Deprecated

* Core: Warn when a module callback has a promise as a return value. (Ray Cohen) [#1600](https://github.com/qunitjs/qunit/issues/1600)

### Fixed

* Core: Fix `QUnit.module.only()` regression where some unrelated modules also executed. (Steve McClure) [#1610](https://github.com/qunitjs/qunit/issues/1610)
* CLI: Improve ESM detection. (Steve McClure) [#1593](https://github.com/qunitjs/qunit/issues/1593)
* HTML Reporter: Increase contrast and use richer colors overall. (Timo Tijhof) [#1587](https://github.com/qunitjs/qunit/pull/1587)

2.15.0 / 2021-04-12
==================

### Changed

* HTML Reporter: Trim whitespace of the filter input. (Nathaniel Furniss) [#1573](https://github.com/qunitjs/qunit/pull/1573)
* CLI: Upgrade `js-reporters` to 2.0.0. [#1577](https://github.com/qunitjs/qunit/pull/1577)

### Deprecated

* Core: Warn when setting hooks for a different module. (Ray Cohen) [#1586](https://github.com/qunitjs/qunit/pull/1586)

### Fixed

* Assert: Fix `assert.throws()` to fail gracefully when expected class does not match. (Steve McClure) [#1530](https://github.com/qunitjs/qunit/issues/1530)
* CLI: Fix TAP output to support cyclical objects. (Zachary Mulgrew) [#1555](https://github.com/qunitjs/qunit/issues/1555) [js-reporters#104](https://github.com/js-reporters/js-reporters/issues/104)
* CLI: Fix TAP output for the `Infinity` value, previously became `null`. (Timo Tijhof) [#1406](https://github.com/qunitjs/qunit/issues/1406)
* CLI: Fix TAP output going silent if `console` object is mocked. (Timo Tijhof) [#1340](https://github.com/qunitjs/qunit/issues/1340)

2.14.1 / 2021-03-14
==================

### Changed

* CLI: Upgrade `commander` to 7.1.0. (Timo Tijhof) [#1564](https://github.com/qunitjs/qunit/issues/1564)

### Fixed

* Core: Restore strict mode compatibility (Edward Faulkner) [#1558](https://github.com/qunitjs/qunit/pull/1558)
* HTML Reporter: Check for undefined `testItem` in testDone callback. (Timo Tijhof)

2.14.0 / 2021-01-12
==================

### Added

* HTML Reporter: Use a fixed header with scrollable test results. (Bryan Crotaz) [#1513](https://github.com/qunitjs/qunit/pull/1513)
* Core: Add official support for SpiderMonkey runtime. (Timo Tijhof) [#1535](https://github.com/qunitjs/qunit/issues/1535)

### Changed

* CLI: Update and re-audit `tiny-glob` and `node-watch`  dependencies. [#1522](https://github.com/qunitjs/qunit/issues/1522), [#1524](https://github.com/qunitjs/qunit/issues/1524)

### Fixed

* HTML Reporter: Set `main` and `navigation` ARIA roles. (Steve McClure) [#1427](https://github.com/qunitjs/qunit/issues/1427)
* Core: Fix `QUnit.module.only` logic for unscoped modules. (Steve McClure) [#1272](https://github.com/qunitjs/qunit/issues/1272)
* Assert: Fix `assert.timeout()` bug causing a non-async test to fail. [#1539](https://github.com/qunitjs/qunit/issues/1539)

2.13.0 / 2020-11-29
==================

### Added

* Core: Log test name as part of "Assertion after test" failures. (brandonocasey) [#1517](https://github.com/qunitjs/qunit/pull/1517)
* CLI: Add native support for ESM .mjs files on Node 12+. (Timo Tijhof) [#1465](https://github.com/qunitjs/qunit/issues/1465)

### Deprecated

* HTML Reporter: Deprecate PhantomJS. (Steve McClure)

### Fixed

* Core: Count tests run so that `suiteEnd` emits correctly with active filters. (Stephen Yeung) [#1416](https://github.com/qunitjs/qunit/issues/1416)
* Core: Fix test counter bug when nesting invalid test functions. (Timo Tijhof)
* HTML Reporter: Avoid leaking `Map` global in older browsers. (Timo Tijhof)

2.12.0 / 2020-11-08
==================

### Added

* Core: Add `QUnit.test.*` aliases for `QUnit.only()`, `QUnit.skip()`, and `QUnit.todo()`. (Steve McClure) [#1496](https://github.com/qunitjs/qunit/pull/1496)
* Assert: Support arrow functions in `assert.throws()` expected callback. (Steve McClure) [#1492](https://github.com/qunitjs/qunit/pull/1492)

### Changed

* CLI: Update `node-watch` and `commander` dependencies. (Timo Tijhof) [#1500](https://github.com/qunitjs/qunit/pull/1500)

### Deprecated

* Core: Deprecate `QUnit.extend()`. (Steve McClure)

2.11.3 / 2020-10-05
==================

### Fixed

* CLI: Fix 'qunit' require error on Node 10 if qunit.json exists. [#1484](https://github.com/qunitjs/qunit/issues/1484)

2.11.2 / 2020-09-09
==================

### Fixed

* CLI: Align `actual` whitespace with `expected` in TapReporter. (Robert Jackson) [js-reporters/js-reporters#107](https://github.com/js-reporters/js-reporters/pull/107) [#1481](https://github.com/qunitjs/qunit/pull/1481)

2.11.1 / 2020-08-25
==================

### Fixed

* CLI: Improve startup performance by using `tiny-glob`. [#1476](https://github.com/qunitjs/qunit/pull/1476)

2.11.0 / 2020-08-16
==================

### Added

* Assert: New strict boolean `assert.true()` and `assert.false()` methods. (Ventuno) [#1445](https://github.com/qunitjs/qunit/pull/1445)
* Docs: Redesign of <https://qunitjs.com>. (Trent Willis) [#1458](https://github.com/qunitjs/qunit/issues/1458)
* HTML Reporter: New fuzzy search when typing in the module filter. (Ventuno) [#1440](https://github.com/qunitjs/qunit/pull/1440)

### Changed

* HTML Reporter: Hide skipped tests also when `hidepassed` is set. (Ray Cohen) [#1208](https://github.com/qunitjs/qunit/issues/1208)

### Fixed

* CLI: Improve performance for non-glob arguments. (SparshithNRai) [#1385](https://github.com/qunitjs/qunit/pull/1385)
* CLI: Fix error with `--watch` option, affected Node 14 on Linux. [#1448](https://github.com/qunitjs/qunit/pull/1448)
* Core: Fix "No tests" to check test count instead of assert count. (Jessica Jordan) [#1405](https://github.com/qunitjs/qunit/issues/1405)

### Removed

* All: Remove support for Node 6 and Node 8, require Node 10+.

2.10.1 / 2020-07-04
==================

### Fixed

* HTML Reporter: Scope QUnit UI button style to not affect `#qunit-fixture`. (XhmikosR) [#1437](https://github.com/qunitjs/qunit/issues/1437)

2.10.0 / 2020-05-02
==================

### Changed

* Core: Run all `QUnit.only`-marked tests. (Ventuno) [#1436](https://github.com/qunitjs/qunit/pull/1436)

### Fixed

* Docs: Add project logo to README. (Jim Lynch)
* HTML Reporter: Fix tab order for toolbar filters. (Eddy Lu)

2.9.3 / 2019-10-08
==================

### Added

* HTML Reporter: Display progress and runtime while test suite is executing. (Stefan Penner) [#1398](https://github.com/qunitjs/qunit/pull/1398)

### Fixed

* CLI: Ignore folders mentioned in the gitignore to improve performance. (SparshithNRai)
* Core: Defer getting the stack trace to improve performance. (Adam Byrne)
* Core: Let `assert.timeout()` replace the timeout if `config.timeout` was already set.

2.9.2 / 2019-02-21
==================

### Fixed

* Core: Ensure semaphores are balanced when timeout occurs. [#1376](https://github.com/qunitjs/qunit/pull/1376)
* HTML Reporter: Avoid inline styles to support CSP without `unsafe-inline`.

2.9.1 / 2019-01-07
==================

### Fixed

* Release: Restore missing files that were accidentally missing in the 2.9.0 npm package. [#1368](https://github.com/qunitjs/qunit/pull/1368)

2.9.0 / 2019-01-06
==================

### Fixed

* Assert: Report errors from `assert.throws()` as strings. [#1333](https://github.com/qunitjs/qunit/issues/1333)
* CLI: Reduce size of the npm package dependency tree. (Timo Tijhof) [#1342](https://github.com/qunitjs/qunit/issues/1342)
* HTML Reporter: Fix an unescaped `details.source`. (Shlomi Fish) [#1341](https://github.com/qunitjs/qunit/pull/1341)

2.8.0 / 2018-11-02
==================

### Added

* Core: Add support for async functions and Promise-returns to QUnit event handlers. These can now be used via `QUnit.begin`, `QUnit.moduleStart`, `QUnit.testStart`, `QUnit.testDone`, `QUnit.moduleDone`, and `QUnit.done`. (Stephen Yeung) [#1307](https://github.com/qunitjs/qunit/pull/1307)
* Core: Add stack trace to uncaught error if the browser supports it. (Anand Thakker)

### Changed

* HTML Reporter: Add a `running` class to list items, for use by plugins. This was previously removed in 2.7.0. [#1323](https://github.com/qunitjs/qunit/pull/1323)

2.7.1 / 2018-10-17
==================

### Fixed

* Core: Avoid breaking tests if the browser throws an error from `performance.measure`. (Gabriel Csapo)

2.7.0 / 2018-10-10
==================

### Added

* HTML Reporter: Add "User Timings" for each test to the browser's Performance Timeline. (Tobias Bieniek) [#1296](https://github.com/qunitjs/qunit/pull/1296)

### Fixed

* CLI: Remove need for `fsevents` extension by upgrading the `sane` package. (Stefan Penner) [#1314](https://github.com/qunitjs/qunit/pull/1314)
* HTML Reporter: Fix XHTML output issue. (Shlomi Fish) [#1317](https://github.com/qunitjs/qunit/pull/1317)

2.6.2 / 2018-08-19
==================

### Fixed

* Assert: Remove redundant return statement from `assert.pushResult()`. (Ger Hobbelt) [#1298](https://github.com/qunitjs/qunit/pull/1298)
* CLI: Update `fsevents` extension for Node 10 compatibility. (Tobias Bieniek) [#1295](https://github.com/qunitjs/qunit/pull/1295)

2.6.1 / 2018-05-15
==================

### Fixed

* Core: Ensure module and test callbacks are released for GC. (Robert Jackson) [#1279](https://github.com/qunitjs/qunit/pull/1279)
* HTML Reporter: Disable autocomplete on module search input. (Christian) [#1277](https://github.com/qunitjs/qunit/pull/1277)

2.6.0 / 2018-03-26
==================

### Added

* CLI: New `--require` option. (Trent Willis) [#1271](https://github.com/qunitjs/qunit/pull/1271)

### Changed

* Assert: Fail test if a non-string value is passed to `assert.step()`.
* Assert: Recognize `undefined` and other falsy rejection values in `assert.rejects()`.
* Core: Throw an error if no tests are run.

### Fixed

* Assert: Clone steps array in `assert.verifySteps()` before exposing to logging callbacks. [#1267](https://github.com/qunitjs/qunit/pull/1267)
* Core: Ensure late-add high-priority tests are inserted in proper order. [#1269](https://github.com/qunitjs/qunit/pull/1269)

2.5.1 / 2018-02-27
==================

### Changed

* HTML Reporter: Restore attributes on `#qunit-fixture` between tests. (Robert Jackson) [#1250](https://github.com/qunitjs/qunit/pull/1250)
* Assert: Fail test if using `assert.step()` without `assert.verifySteps()`.

### Fixed

* Core: Release all processing locks when Promise rejects from a test. [#1253](https://github.com/qunitjs/qunit/pull/1253)

2.5.0 / 2018-01-09
==================

### Added

* Assert: New `assert.rejects()` method. (Robert Jackson) [#1238](https://github.com/qunitjs/qunit/pull/1238)
* CLI: Fail test if there are unhandled rejections, similar to uncaught errors. (Robert Jackson) [#1241](https://github.com/qunitjs/qunit/pull/1241/)
* HTML Reporter: Fail test if there are unhandled rejections, similar to uncaught errors. (Robert Jackson) [#1241](https://github.com/qunitjs/qunit/pull/1241/)

### Changed

* Assert: The `assert.verifySteps()` method now resets the steps buffer, making it easier to use multiple times in a single test. [#1233](https://github.com/qunitjs/qunit/pull/1233)

### Fixed

* Core: Remove artificial delays from internal `setTimeout` processing code. [#1246](https://github.com/qunitjs/qunit/pull/1246)

2.4.1 / 2017-10-21
==================

* CLI: Add slight debounce to restarting tests on file watching.
* CLI: Catch file load failures and report as failing tests.
* CLI: Clear require cache of watched files between runs.
* CLI: List available reporters when option is specified with no value.
* CLI: Properly support watching files added after first run.
* HTML Reporter: Fix regression in error reporting.

2.4.0 / 2017-07-08
==================

* Assert: Fix assert.push deprecation link.
* Assert: New `assert.timeout()` for setting per-test timeout durations.
* CLI: Better messaging on early exits.
* CLI: Default to non-zero exit code.
* CLI: Exit with non-zero status when no tests are run.
* Core: Add support for multiple callbacks in module hooks, such as via `hooks.beforeEach()` and `hooks.afterEach()`.
* Core: Fallback to `typeof obj` in `QUnit.objectType`.
* Core: New `QUnit.module.only()` method.
* Core: New `QUnit.module.skip()` method.
* Core: New `QUnit.module.todo()` method.
* Core: Fix memory release of objects in equiv logic of `assert.deepEqual()`.

2.3.3 / 2017-06-02
==================

### Added

* Core: Support running in Web Workers. (Marten Schilstra) [#1171](https://github.com/qunitjs/qunit/pull/1171)

### Changed

* CLI: Prefer local version of QUnit.

2.3.2 / 2017-04-17
==================

* HTML Reporter: Add specific diff for number types instead of str-diff. #1155
* Core: Fix bug calling hooks with skipped tests. #1156

2.3.1 / 2017-04-10
==================

* Assert: Allow assertions after async.
* Assert: Throw if async callback invoked after test finishes.
* Core: Ensure assertions occur while test is running.
* Core: Fix test instance memory leak. #1138
* Core: Slim assertions after reporting them.

2.3.0 / 2017-03-29
==================

### Added

* CLI: Introduce QUnit CLI. (Trent Willis) [#1115](https://github.com/qunitjs/qunit/pull/1115)
* CLI: Add file watching option.
* CLI: Add seed option.
* CLI: Add support for custom reporters.
* HTML Reporter: Display todo tests when `hidepassed` is set.

### Changed

* Core: `Test#pushFailure` now calls `Test#pushResult` internally.

2.2.1 / 2017-03-19
==================

* Core: Fix sessionStorage feature detection.

2.2.0 / 2017-03-11
==================

### Added

* Core: Support running in a sandboxed iframe.
* Core: New event emitter. (Trent Willis) [#1087](https://github.com/qunitjs/qunit/pull/1087)
* Core: New `QUnit.todo()` method. (Trent Willis) [#1080](https://github.com/qunitjs/qunit/pull/1080)
* Assert: New `assert.step()` and `assert.verifySteps()` methods. (Trent Willis)(Trent Willis) [#1075](https://github.com/qunitjs/qunit/issues/1075)

### Changed

* Core: QUnit.onError now expects error or error-like object.
* Core: Include "todo" in assertion event data.

### Fixed

* HTML Reporter: Ensure window.onerror return values are correct.
* Core: Fix start on Node when autostart is not set to true. #1105
* Core: Fix double begin when calling start in Node.
* Core: Rewrite QUnit.equiv to be breadth-first.
* Core: Optimize the "set" and "map" callbacks.
* Core: Fix console error in IE9. #1093

2.1.1 / 2017-01-05
==================

* All: Remove deprecated 1.x features.
* Assert: Deprecate `assert.push()`.
* Core: `QUnit.start()` no longer requires calling `QUnit.load()` first.
* HTML Reporter: Add an "Abort" button.

2.1.0 / 2016-12-05
==================

* Core: Support a predefined QUnit.config.
* Core: Fix clearing of storage on done.
* Core: Always report if test previously failed.
* Core: New `config.storage` option.
* Core: Load the onerror module.
* Core: Fix QUnit.equiv object methods comparison.
* Core: Support multiple nested modules hooks properly.
* Core: Fire moduleStart only when starting module for the first time.
* Core: Fire moduleDone when actually finished with module.
* HTML Reporter: Decouple from sessionStorage reordering logic.
* HTML Reporter: Fix expanding failed tests when collapse is false.
* HTML Reporter: Handle URL params named like `Object.prototype` properties.
* Release: Use SPDX format in bower.json's license.

2.0.1 / 2016-07-23
==================

* Core: Prevent multiple "begin" events from calling `QUnit.load()`.
* Core: Use callback-based pause/resume for better multi-pause isolation.
* HTML Reporter: Fix apply/reset button visibilty.
* Core: Ensure runtime for skipped tests is 0.
* Dump: New parser for `Symbol` type.

2.0.0 / 2016-06-16
==================

* All: Remove deprecated features.
* All: Remove `QUnit.config.autorun`.
* All: Prevent async tests from having multiple resume timeouts.
* Assert: Remove `assert.throws()` signature with string expected value.
* Dump: update typeOf to extract extra complex type definition.
* Core: New `before` and `after` module hooks.
* Core: Decode "+" to " " (space) in url params.
* Core: Throw error if QUnit is already defined globally.
* HTML Reporter: Add reset/apply buttons in the module picker.
* HTML Reporter: Improve module picker accessibility. (Richard Gibson)
* HTML Reporter: Improve color/background order consistency. (Richard Gibson)
* HTML Reporter: Improve toolbar styles. (Richard Gibson)
* HTML Reporter: Add multi-select module dropdown. (Maciej Lato)

2.0.0-rc1 / 2016-04-19
=====================

* All: Remove deprecated features.
* All: Remove `QUnit.config.autorun`.
* Assert: Remove `assert.throws()` signature with string expected value.
* Core: New `before` and `after` module hooks.
* HTML Reporter: Add multi-select module dropdown.

1.23.1 / 2016-04-12
===================

* Core: Prevents "throws" keyword from breaking Rhino environments.
* Core: Be consistent in function type checks.

1.23.0 / 2016-03-25
==================

* Core: Move URL parameter handling to HTML Reporter.
* Core: Reintroduce `QUnit.config.module`.
* Core: Stop splitting URL parameter values by commas.
* Core: New `moduleId`-based filtering.
* Core: Support running tests in pseudo-random order.
* Dump: Fix asymmetrical function dump argument spacing.
* HTML Reporter: Fix escaping of diffs.
* HTML Reporter: Add message explaining missing diff.
* HTML Reporter: Fix hidepassed element check.
* Assert: Treat "Set" and "Map" types as unordered in `QUnit.equiv`.

1.22.0 / 2016-02-23
==================

* Assert: New `assert.pushResult()` method.
* Assert: Extend Assert methods to QUnit for backwards compatibility.
* HTML Reporter: Escape setUrl output.

1.21.0 / 2016-02-01
==================

* Assert: Improve speed of QUnit.equiv.
* Assert: Fully support Object-wrapped primitives in `assert.deepEqual()`.
* Assert: Register notOk as a non-negative assertion.
* Core: Improve regular expression comparisons.
* Core: Support filtering by regular expression.
* HTML Reporter: Fix hidden test results under static parents.

1.20.0 / 2015-10-27
==================

* Assert: Expose `assert.raises()` to the global scope.
* Assert: Add an optional `callCount` parameter to `assert.async()`.
* Core: New `QUnit.only()` method.
* Core: Support Symbol types on `QUnit.equiv`.
* Core: Make `QUnit.start` fails if called with a non-numeric argument.
* Core: New nested scopes ability for modules.
* Core: Equivalency for descendants of null constructors.
* HTML Reporter: Add indicator for filtered test.
* HTML Reporter: Collapse details for successive failed tests.

1.19.0 / 2015-09-01
==================

* Assert: Add support for ES6 Map and Set to equiv for `assert.deepEqual()`.
* Core: New `QUnit.stack()` method.
* Dump: Escape backslash when quoting strings.
* HTML Reporter: Avoid readyState issue with PhantomJS.
* HTML Reporter: HTML reporter enhancements for negative asserts.
* HTML Reporter: Show diff only when it helps.

1.18.0 / 2015-04-03
==================

* Assert: New `assert.notOk()` for asserting falsy values.
* Core: Expose Dump `maxDepth` property.
* Core: Expose QUnit version as `QUnit.version` property.
* Dump: Fix .name/.property doublettes.
* HTML Reporter: New diff using Google's Diff-Patch-Match library.
* HTML Reporter: Make it more obvious why diff is suppressed.
* HTML Reporter: Change display text for bad tests.
* HTML Reporter: Fix checkbox and select handling in IE <9.
* HTML Reporter: Fix test filter without any module.
* HTML Reporter: Retain failed tests numbers.

1.17.1 / 2015-01-20
==================

* HTML Reporter: Fix missing toolbar bug.

1.17.0 / 2015-01-19
==================

* Core: Support Node.js export parity with CommonJS.
* HTML Reporter: Add the filter field.
* HTML Reporter: Don't hide skipped tests.
* HTML Reporter: Fix regression for old markup.
* HTML Reporter: Prevent XSS attacks.
* HTML Reporter: QUnit.url is now a private function in the HTML Reporter.
* HTML Reporter: Url params can be set by code.

1.16.0 / 2014-12-03
==================

### Added

* Assert: Add alias for throws called `assert.raises()`.
* Assert: New `assert.async()`  method.
* Core: Add runtime property to `QUnit.moduleDone()` data.
* Core: New `QUnit.skip()` method.
* Core: `QUnit.test()` now supports returning Promise and async functions.
* HTML Reporter: Add runtime of each assertion to result output.

### Changed

* Core: Change `url()` helper to output `?foo` instead of `?foo=true`.
* Core: Rename config.module to config.moduleFilter.

### Fixed

* Assert: Fail assertions after existing `assert.async()` flows are resolved.
* Core: Restore and warn if some logging callback gets modified.
* Core: Throws an error on non-function params for logging methods.
* Core: Defer begin event till tests actually starts.
* Core: Detail modules and tests names in the logging callbacks.
* Core: Use `Error#stack` without throwing when available.
* Dump: Configurable limit for object depth.

1.15.0 / 2014-08-08
==================

* Assert: Introduce Assert constructor with test context. This heavily improves debugging of async tests, as assertions can't leak into other tests anymore. Use the new `assert` argument in your test to get the full benefit of this.
* Assert: Improve the default message from `assert.ok()`  to include the exact received value.
* Assert: Removal of deprecated `raises`, `same`, and `equals` methods. Use `throws`, `deepEqual`, and `equal` instead.
* Core: Add `totalTests` for total number of tests to `QUnit.begin()`  data.
* Dump: Rename `QUnit.jsDump` to `QUnit.dump`, the old name is kept as deprecated alias and may be removed later.
* Dump: Output non-enumerable properties of TypeError. Makes it easier to compare properties of error objects.
* HTML Reporter: Output only assertion count for green tests. Less visual clutter for passing tests.
* Assert: Support for buggy IE native Error types in `assert.throws()`.

1.14.0 / 2014-01-31
==================

* Addons: Remove last remnants.
* Assert: `assert.throws()` now supports comparing to Error instances.
* Assert: `assert.throws()` now supports comparing to error strings.
* Core: Add config property for disabling default scroll-to-top.
* Core: Add support for "select one" dropdowns to `QUnit.config.urlConfig`.
* Core: Cache window.clearTimeout in case it gets mocked.
* Core: Run multiple tests by test number.
* HTML Reporter: Removing some redundant CSS code.
* Release: Set main property to qunit/qunit.js.

1.13.0 / 2014-01-04
==================

* All: The Grand QUnit Split of 2013. (Timo Tijhof)
* Assert: Remove `raises()`, deprecated in 2012.
* Core: Add runtime property to testDone, deprecate duration.
* Core: Only export to the variable that we check for.
* Core: Properly check for existence of document.
* Core: Remove triggerEvent, which isn't used or documented anywhere.
* Core: Silence addEvent in non-browser env.
* HTML Reporter: Use `id` function for selection elements in two places that were not using it. #463
* Release: Add bower.json. #461

1.12.0 / 2013-06-21
===================

* Addons/Canvas: Show how to test with images. #438
* Addons/JUnitLogger: Add a `name` property to the test run. #389
* Addons/PhantomJS: Added optional timeout. Closes #415.
* Addons/PhantomJS: Include stack trace for all failed tests. #416.
* Addons: Move 'addons/canvas' to 'JamesMGreene/qunit-assert-canvas.git'. Tree: https://github.com/JamesMGreene/qunit-assert-canvas/tree/v1.0.0.
* Addons: Move 'addons/close-enough' to 'JamesMGreene/qunit-assert-close.git'. Tree: https://github.com/JamesMGreene/qunit-assert-close/tree/v1.0.0.
* Addons: Move 'addons/composite' to 'jquery/qunit-composite.git'. Tree: https://github.com/jquery/qunit-composite/tree/v1.0.0. #419.
* Addons: Move 'addons/junitlogger' to 'jquery/qunit-reporter-junit.git'.
* Addons: Move 'addons/step' to 'JamesMGreene/qunit-assert-step.git'. Tree: https://github.com/JamesMGreene/qunit-assert-step/tree/v1.0.0.
* Addons: Move 'addons/themes/gabe' to 'Krinkle/qunit-theme-gabe.git'.
* Addons: Move 'addons/themes/ninja' to 'Krinkle/qunit-theme-ninja.git'.
* Addons: Move 'addons/themes/nv' to 'Krinkle/qunit-theme-nv.git'.
* Assert: Message for `assert.ok()` shouldn't be undefined in 'log' event.
* Core: Deprecate QUnit.current_testEnvironment in favour of config.current.testEnvironment.
* Core: Emit moduleStart before testStart even if test isn't in a module.
* Core: Fix mismatch between moduleStart and moduleDone events.
* Core: Improve circular reference logic in equiv. #397
* Core: Removed jQuery.trim optimization. #424
* Core: Sort the module names so we no longer rely on implicit ordering. #391, #392
* Core: Use a local setTimeout reference for internal reference to failures if later stubbed. #432, #433.
* HTML Reporter: Clear filter and testNumber when choosing a module. #442

1.11.0 / 2013-01-20
==================

### Added

* Addons: New "Ninja" theme.
* Assert: New `assert.propEqual()` and `assert.notPropEqual()`. (Timo Tijhof) [#317](https://github.com/qunitjs/qunit/issues/317)
* HTML Reporter: Capture and show each test's runtime duration. #344

### Changed

* Addons/Composite: Test suites can be named by including an obj with name & path props within array param for `.testSuites()`.
* Addons/PhantomJS: Include source in assertion details.
* Core: Apply the same exception handling for test and teardown try/catch as for setup.

### Fixed

* Addons/Canvas: Use 0.6 as alpha value to avoid inconsistencies between browsers. #342
* Addons/JUnitLogger: Rewrite as it was in bad shape (unused vars, duplicate internal code, sub-optimal XmlWriter logic).
* Addons/PhantomJS: Removed the polling mechanism in favor of PhantomJS 1.6+'s `WebPage#onCallback`.
* Assert: Make `throws` ES3 compatible. (Mathias Bynens)
* Core: Fix URL generator to take protocol and host into account to fix usage with file protocol in IE7/8.
* Core: Fix issue with Error.prototype.toString in IE 7.
* Core: Improve start()-called-too-often fix, initialize semaphore at 1, fixes autostart=false case. Also provide stack for the offending start() call.
* Core: Push a failing assertion when calling start() while already running. Resets anyway to keep other tests going. #314
* Core: Remove global variable "assert". #341
* Core: There's type-free objects in Firefox, extend objectType() to allow null match. #315
* Dump: Extend jsdump to output Error objects as such, including the message property. Extend throws to provide 'expected' value when possible. #307
* Dump: Include contents of text nodes in `jsDump.node`. (Timo Tijhof) #380
* HTML Reporter: Delay start until `QUnit.init` happened. #358
* HTML Reporter: Change summary text to use the word "assertions" instead of "tests". #336
* HTML Reporter: Fix exception from Diff on property "constructor". #394
* HTML Reporter: Fix module picker for old IE. #366.
* HTML Reporter: Fix urlConfig checkbox event for old IE. #369
* HTML Reporter: Use classes to collapse assertion groups. #269

1.10.0 / 2012-08-30
==================

* All: Simplify licensing to only MIT, no more MIT/GPL dual licensing.
* Assert: Equiv for `assert.deepEqual()` now recognizes the ES6 sticky "y" flag for RegExp objects. #284
* Assert: Make `QUnit.expect()` without arguments behave as a getter. #226
* Core: Add module and test name to the data provided via `QUnit.log()`. #296
* Core: Keep a local reference to Date for internal use. #283
* HTML Reporter: Add a UI for the module filter.
* HTML Reporter: Always display of global errors regardless of filtering URL parameters. #288
* HTML Reporter: Scroll the window back to top after tests finished running. #304

1.9.0 / 2012-07-11
==================

* Assert: Rename `assert.raises()` to `assert.throws()`, keeping an alias for compat. #267
* Core: Make the module filter case-insensitive. #252
* HTML Reporter: Link should ignore "testNumber" and "module". #270
* HTML Reporter: Move checkboxes into toolbar and give them labels and tooltip descriptions. #274
* HTML Reporter: Remove use of shadows and change border radius to 5px for pass/error.
* Release: Start publishing to npm under the `qunitjs` package name.

1.8.0 / 2012-06-14
==================

* Assert: Avoid global eval error from `assert.raises()` being reported as global exception in IE. #257
* Core: Reset config.current at the right time. #260
* HTML Reporter: Improve window.onerror handling.
* HTML Reporter: New `module` url parameter. #252

1.7.0 / 2012-06-07
==================

* Addons: Add CLI runner for Phantomjs.
* Assert: Refactor assertion helper functions into a new extensible `QUnit.assert` object, globals remain for compat.
* Core: Fix confusion of Date type as Object in `assert.deepEqual()`. #250
* Core: Improve extractStacktrace logic. #254
* Core: Make "Rerun" link only run one test by tracking execution order. #241
* Core: Make filters case-insensitive. #252
* Core: New `config.requireExpects` option. #207
* HTML Reporter: Add Rerun link to placeholders. #240

1.6.0 / 2012-05-04
==================

* Addons/Composite: Double clicking on composite test rows opens individual test page.
* Core: Only check for an `exports` object to detect a CommonJS environment, fixes compat with RequireJS. #237
* HTML Reporter: Prefix test-output id and ignore that in noglobals check. #212

1.5.0 / 2012-04-04
==================

* Core: Add stats results to data. QUnit.jUnitReport function take one argument `{   xml:'<?xml ...',   results:{failed:0, passed:0, total:0, time:0} }`.
* Core: Call test "block" with config.current.testEnvironment. #217
* Core: Fix clearing of sessionStorage in Firefox 3.6.
* HTML Reporter: Modify "Running..." to display test name. #220

1.4.0 / 2012-03-10
==================

* Core: Add QUnit.pushFailure to log error conditions like exceptions. Accepts stacktrace as second argument, allowing extraction with catched exceptions (useful even in Safari). Remove old `fail()` function that would just log to console, not useful anymore as regular test output is much more useful by now. Move up `QUnit.reset()` call to just make that another failed assertion. Used to not make a test fail. #210
* Core: Apply "notrycatch" option to setup and teardown callbacks. #203, #204
* Core: Extend exports object with QUnit properties at the end of the file to export everything.
* Core: Make test fail if no assertions run. #178
* Core: Prefix test-related session-storage items to make removal more specific. #213
* HTML Reporter: Sort objects in value dumps alphabetically to improve diffs. #206

1.3.0 / 2012-02-26
==================

* Addons: New Gabe theme by Gabe Hendry. [#188](https://github.com/qunitjs/qunit/pull/188)
* Addons: New NV theme by NV. [#62](https://github.com/qunitjs/qunit/pull/62)
* Addons: New junitlogger addon.
* Core: Catch assertions running outside of `test()` context, make sure source is provided even for `ok()`. #98
* Core: Check for global object to find setTimeout in Node.js.
* Core: Clear all sessionStorage entries once all tests passed. Helps getting rid of items from renamed tests. #101
* Core: Fix sourceFromsStacktrace to get the right line in Firefox. Shift the 'error' line away in Chrome to get a match.
* Core: Generate more base markup, but allow the user to exclude that completely or choose their own. #127
* Core: In autorun mode, moduleDone is called without matching moduleStart. #184
* Core: Remove the testEnvironmentArg to `test()`. Most obscure, never used anywhere. `test()` is still heavily overloaded with argument shifting, this makes it a little more sane. #172
* Core: Replace deprecated same and equals aliases with placeholders that just throw errors, providing a hint at what to use instead. Rename test file to match that.
* Core: Serialize expected and actual values only when test fails to improve testing speed for passing tests. #183
* Core: Update sessionStorage support test to avoid QUOTA_EXCEEDED_EXCEPTION.
* HTML Reporter: Avoid `outerHTML` for Firefox < 11. Use cloneNode instead.
* HTML Reporter: Escape `document.title` before inserting into markup. #127
* HTML Reporter: Fix the fixture reset to not break if the element is not present on the page.
* HTML Reporter: Keep label and checkbox together.
* HTML Reporter: Set fixed CSS dimensions on `#qunit-fixture`. #114
* HTML Reporter: Show exception stack when test failed.

1.2.0 / 2011-11-24
==================

* Core: Allow objects with no prototype to tested against object literals.
* Core: Fix IE8 "Member not found" error.
* Core: Export `QUnit.start()` as alias for global `start()` for use in CommonJS runtimes, such as Node.js.

1.1.0 / 2011-10-11
==================

* Core: Check if setTimeout is available before trying to delay running the next task. #160
* Core: Default 'expected' to null in `asyncTest()`, same as in `test()`.
* Core: Avoid treating random objects with `length` properties as empty arrays in comparisons. (Trevor Parscal) [#164](https://github.com/qunitjs/qunit/pull/164)
* Core: Fix IE 6-8 compat with comparisons of NodeList objects. (Trevor Parscal) [#166](https://github.com/qunitjs/qunit/pull/166)
* Core: Fix a bug where after an async test, assertions could move between test cases because of internal state (config.current) being incorrectly set
* Core: Handle `expect(0)` as expected, i.e. `expect(0); ok(true, foo);` will cause a test to fail. (mmchaney) [#158](https://github.com/qunitjs/qunit/pull/158)
* HTML Reporter: Add a window.onerror handler. Makes uncaught errors actually fail the tests. #134
* HTML Reporter: Avoid internal exception if user extends Object.prototype object with non-standard properties.

1.0.0 / 2011-10-06
==================

First stable release.

repository: qunitjs/qunit

repo_name: qunitjs/qunit


text:
# vvec-org/add-project
This action adds a project to the current repo with a defined set of columns

## inputs
This action requires the following user inputs:

input | description
---- | ----
repo-id | the (node) ID of the repository
repo-name | name of the repository
repo-owner | owner of the repository
repo-token | authorization token to access the repository
project-name | a name for the project to add
project-body | descriptive text for the project

## outputs
none

## dependencies
This action uses:
- the GitHub GraphQL API
- the workflow run context.
- the @action/core package.

*NOTE* This is action is in development and is subject to change

license: MIT

repository: vvec/add-project

branch_name: refs/heads/main

extension: md

license_type: permissive

repo_name: vvec/add-project


text:
# ansible-docker

ansible-docker is a docker sandbox with amazonlinx(AWS ec2) and ansible in order to speed up devops coding.

# Usage

## Install
```bash
git clone https://github.com/diegopacheco/ansible-docker.git
cd ansible-docker/
./ansible-docker.sh bake
```

## Run
```bash
./ansible-docker.sh run
```
```bash
./ansible-docker.sh run
 [WARNING]: Found both group and host with same name: localhost

PLAY [<IP_ADDRESS>] ***************************************************************

TASK [Gathering Facts] *********************************************************
ok: [localhost]

TASK [git : ensure yum is updated] *********************************************
ok: [localhost]

TASK [git : ensure Git is present] *********************************************
ok: [localhost]

PLAY RECAP *********************************************************************
localhost                  : ok=3    changed=0    unreachable=0    failed=0
```

## How to Add/Change Ansible?

Goto /src/main.yml and call your role. You role should be under /src/roles/. <BR>
There is a sample GIT role here: https://github.com/diegopacheco/ansible-docker/tree/master/src/roles/git/tasks

## Linter

There is support for ansible-lint. Just do:
```bash
./ansible-docker.sh lint main.yml
```
```bash
./ansible-docker.sh lint main.yml
[ANSIBLE0017] become_user requires become to work as expected
/app/main.yml:3
{'become_user': {'hosts': '<IP_ADDRESS>', 'roles': ['git'], 'vars': {'myvar': 10, '__file__': '/app/main.yml', '__line__': 6}, 'become_user': 'root', '__file__': '/app/main.yml', '__line__': 3}}

[ANSIBLE0010] Package installs should not use latest
/app/roles/git/tasks/main.yml:3
Task/Handler: ensure yum is updated
```

license: Unlicense

repository: prabhatpankaj/ansible-docker

branch_name: refs/heads/master

repo_name: prabhatpankaj/ansible-docker


text:
# mapping
Simple scripts for mapping

## Convert Garmin csv to kml
~~~
bash garmin_csv_to_kml.bash input.csv > output.kml
~~~

repository: scpeters/mapping

repo_name: scpeters/mapping


text:
---
external help file: PowerHive-help.xml
Module Name: PowerHive
online version: https://github.com/pm091/powerhive
schema: 2.0.0
---

# Get-HiveWeather

## SYNOPSIS
Provides basic temperature reading from the Hive Weather API

## SYNTAX

```
Get-HiveWeather [[-PostCode] <String>] [<CommonParameters>]
```

## DESCRIPTION
Uses a PostCode to retrieve current outside temperature.
By default the users postcode is used in the query, this can
be overridden using the PostCode parameter

## EXAMPLES

### EXAMPLE 1
```
Get-HiveWeather
```

### EXAMPLE 2
```
Get-HiveWeather -PostCode SW12
```

Weather Icon        : clear_sky
Outside Weather     : Clear
Outside Temperature : 6.0 °C

## PARAMETERS

### -PostCode
UK Postcode

```yaml
Type: String
Parameter Sets: (All)
Aliases:

Required: False
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```

### CommonParameters
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see about_CommonParameters (http://go.microsoft.com/fwlink/?LinkID=113216).

## INPUTS

### Does not take pipeline input.

## OUTPUTS

### Hive Weather Properties

## NOTES

## RELATED LINKS


text:
#Snapception

Intercept and decrypt all snapchats received over your network

## Quickstart
Installing is easy:
```
pip install snapception
```

Starting it is easy too:
```
snapception --help
Usage: snapception [OPTIONS]

Options:
  -v, --verbose        Enable logging
  -vv, --very-verbose  Include mitmdump in logging
  -o, --output TEXT    Specify output directory (Default is ~/snaps)
  --help               Show this message and exit.
```

Configuring it is also pretty easy:

1. Configure your device to use a proxy pointing to Port 8080 of the host computer
2. Install a CA on your device by visiting mitm.it once connected to the proxy
3. Watch all the Snapchats you receive over the network become available on your computer

## Isn't this just SnapSave/SnapBox/SnapSomething?
Nope. Those require you to authenticate with Snapchat's backend by giving the third party your username and password. Snapception, on the other hand, intercepts *all* snapchats received over the network so long as the receiving device is connected to the computer running Snapception via a proxy. Those applications also require you to manually login and save your snapchat before officially opening it; Snapception automatically intercepts, decrypts, and saves your received snaps.

## What's your aim? Privacy invasion? World domination?
Nope. I just created this to call attention to a security vulnerability that's been present in Snapchat for over a year. Did you know they use *one*, *hardcoded* key for *all* video and image encryption?

Anyway, for Snapception to intercept your snapchats, you must be connected to the computer via a proxy and have installed its CA, so someone can't just intercept your snapchats if you merely are using their network.

## What's the technology stack behind Snapception?
Glad you asked! The core of my script is basically a glorified event handler built on top of [mitmdump](https://github.com/mitmproxy/mitmproxy), a highly extensible and easily scriptable man-in-the-middle proxy server. Besides the event handler I built a basic command line interface using [click](https://github.com/mitsuhiko/click), which both launched mitmdump and glued together its custom event handler.

I would not have been able to build Snapception without the decryption ruby script by [AJ Jenkins](https://github.com/ajenkins/comp116-ajenkins/tree/master/final_project), who in turn based it upon the code written by [Amelia Cuss](https://kivikakk.ee/2013/05/10/snapchat.html). My code expands upon theirs in that in automatically intercepts the encrypted snapchats before decrypting them whereas before the encrypted snapchats would have to manually be obtained some other way.

## Can I contribute?
Please! Feel free to submit any pull requests. I whipped this application up in less than a day, so there is bound to be some bugs, missing features, or hastily written code.

gha_license_id: MIT


text:
[![Gem Version](https://badge.fury.io/rb/normalizator.svg)](https://rubygems.org/gems/normalizator)
[![Build Status](https://travis-ci.org/omarandstuff/normalizator.svg?branch=master)](https://travis-ci.org/omarandstuff/normalizator)
[![Maintainability](https://api.codeclimate.com/v1/badges/8ac96249f76f2001c036/maintainability)](https://codeclimate.com/github/omarandstuff/normalizator/maintainability)
[![Test Coverage](https://api.codeclimate.com/v1/badges/8ac96249f76f2001c036/test_coverage)](https://codeclimate.com/github/omarandstuff/normalizator/test_coverage)

Adaptable general solution for data normalization, you can create your custom rules to normalize any field in your data set.

## Getting staterd

```shell
gem install normalizator
```
Gamefile:
```ruby
gem 'normalizator'
```

## Input > Output

Your input should look like this

```ruby
input = [{ field: 'value', field2: 'value' }, { field: 'number', field2: 'number' } ]
```

So your output can look like this

```ruby
p output

[{ field: 'Value', field2: 'Value' }, { field: 'Number', field2: 'Number' } ]
```

in other words ana array of objects goes in, ana array of objects goes out.

## Rules

To normalize your data you need to make use of a set of rules that will run in every field that you want it normalized.

```ruby
require 'normalizator'

rules = {
  field: Normalizator::NumericRule.new() # This rule will run in "field"
}

input = [{
  field: '66'
}]

Normalizator.normalize(rules, input)

# [{ field: 66 }]
```

### Numeric Rule

Normalizator inclues a useful numeric rule to convert field values to numbers and verify if they fall into optional numeric validations.

```ruby
require 'normalizator'

rule_oprions = {
  return_original_on_failure: true, # if validations fail, return the original value?
  default_value_on_failure: nil, # if return_original_on_failure is set to false, which value return instead?
  runs_on_derived_value: false, # if a rula has been applied beore this one, ose that value?, false for the original one
  positive: false, # Validate if the number is positive or zero
  negative: false, # Validate if the number is negative
  greater_than: 0, # Validate if the number is greater than that number
  less_than: 100 # Validate if the number is less than that number
}

rule = Normalizator::NumericRule.new(rule_options)
```

### Enum Rule

The enum rule makes sure the value falls into a set of enumerators useful when a field contand incomplete data but can be matched with the compelete one.

```ruby
require 'normalizator'

rule_oprions = {
  return_original_on_failure: true, # if validations fail, return the original value?
  default_value_on_failure: nil, # if return_original_on_failure is set to false, which value return instead?
  runs_on_derived_value: false, # if a rula has been applied beore this one, ose that value?, false for the original one
  enumerators: ['Complete', 'Whole'], # Array of posible complete values the field can have
  case_sensitive: false, # If you want only the values that match exactly with the enumerators: et this to true, you can combine it with return_original_on_failure, to set to nil values that don't match exactly
  diffuse: true # Use this if you one values to match partially with the enumerators and set, ex: { value: 'com' } -> { value: 'Complete' }
}

rule = Normalizator::EnumRule.new(rule_options)
```

### Run multiple rules

You can run multiple rules in a single field, just wrap them in an array

```ruby
require 'normalizator'

rules = {
  field: [Normalizator::NumericRule.new(), another_rule]
}
```

### Constrained rules

You can run rules on severak fields at the same time, just set the rules key as an array of the fields.

```ruby
require 'normalizator'

rules = {
  [:field, :field2]: custom_rule
}
```

## Contributions

PRs are welcome

## Lisence

MIT

repository: omarandstuff/normalizator

repo_name: omarandstuff/normalizator


text:
---
layout: post
title: "Automatically Show Exit Codes in Bash"
category: posts
---

When software stops running, it produces an [exit code](https://en.wikipedia.org/wiki/Exit_status). In your shell (bash, zsh...),
you can show the exit code using the `$?` variable:

![terminal with exit code](/assets/exit-code-bash/terminal-with-exit-code.png)

{% highlight text %}
# or, usually, as a one-liner...

$ echo something; echo $?
{% endhighlight %}

0 is good, [any other value](https://www.tldp.org/LDP/abs/html/exit-status.html) means something went
wrong. Different values have different meanings, but it's [software specific](https://stackoverflow.com/questions/1101957/are-there-any-standard-exit-status-codes-in-linux).

That works ... but it's awkward. If you need the check the exit code, you need
to remember running it _immediately_ after the command you're interested in.
Otherwise, `$?` will be set to the exit code of whatever you ran after.

## Showing $? Automatically

It doesn't take too much Googling to find solutions to show the exit code after a command exits:

![terminal with loud exit code](/assets/exit-code-bash/terminal-with-loud-exit-code.png)

Here's the code for your `.bashrc`:

{% highlight bash %}
# capture escape sequences for colors...
COLOR_RED=$(tput setaf 1)
ATTR_RESET=$(tput sgr0)

export PROMPT_COMMAND=show_exit_code
show_exit_code() {
  local exit=$?
  if [ "$exit" -ne 0 ]; then
    echo -e "${COLOR_RED}exit: ${exit}${ATTR_RESET}"
  fi
}
{% endhighlight %}

[PROMPT_COMMAND](https://tldp.org/HOWTO/Bash-Prompt-HOWTO/x264.html):

> Bash provides an environment variable called PROMPT_COMMAND.
> The contents of this variable are executed as a regular Bash command just before Bash displays a prompt.

What I like about this solution is that it doesn't mess with `PS1` (unlike
[other](https://gist.github.com/weibeld/f3b6e6187029924a9b3d)
[solutions](https://stackoverflow.com/questions/16715103/bash-prompt-with-last-exit-code))
and it doesn't show anything when the exit code is 0. I've never been a fan of
complicated `PS1` with a lot of fancy colors and statuses.

extension: markdown


text:
<img width="200px" align="right" src="https://team2471.org/wp-content/uploads/2017/08/tmm-logo_new-300x300.png">

# meanlib

Meanlib is a Kotlin coroutine-driven library for use on FRC robots.

## Installation

Add meanlib to your `build.gradle`:

```groovy
repositories {
    mavenCentral()
    maven { url "https://jitpack.io" }
}

dependencies {
    compile "com.github.TeamMeanMachine:meanlib:SNAPSHOT-frc2019"
    // other dependencies ...
}
```

## Basic Usage

A very basic RobotProgram can be seen below:

```kotlin
object Robot : RobotProgram {
    override suspend fun enable() = println("Enabling robot!")

    override suspend fun disable() = println("Disabling robot!")

    override suspend fun teleop() = println("Beginning teleoperated mode!")

    override suspend fun autonomous() = println("Beginning autonomous mode!")
}

fun main() {
    initializeWpilib()

    runRobotProgram(Robot)
}
```

This program will print "Enabling robot!" followed by "Beginning teleoperated mode!" as soon as it's
enabled in teleop from the Driver Station.

Being driven by Kotlin coroutines, long-running actions can easily be run in parallel with one
another.

```kotlin
object Robot : RobotProgram {
    override suspend fun teleop() {
        GlobalScope.launch(MeanlibDispatcher) {
            parallel({
                // Wait 5 seconds
                delay(5.0)
                println("Hello meanlib!")
            }, {
                for (i in 0..6) {
                    println("Number $i!")
                    delay(1.0)
                }
            })
            println("Done.")
        }
    }
}
```

This code will result in the following output:

```
Number 0!
Number 1!
Number 2!
Number 3!
Number 4!
Number 5!
Hello meanlib!
Number 6!
Done.
```

_TODO: More complete examples coming soon._

## Credits

Special thanks to Team 2521 for their outstanding contributions!

repository: TeamMeanMachine/meanlib

gha_language: Kotlin

gha_license_id: Unlicense

repo_name: TeamMeanMachine/meanlib


text:
python-webpack-manifest
=======================

Manifest loader that allows you to include references to files built by webpack.

Handles manifests generated by the [webpack-yam-plugin](https://github.com/markfinger/webpack-yam-plugin).

Installation
------------

If you're using this in a project, use `pip`

```
pip install webpack-manifest
```

If you're using this in an app or library, just copy the [loader's file](webpack_manifest/webpack_manifest.py)
in so that you can avoid causing any dependency pains downstream.

Usage
-----

If you installed with pip, import it with

```python
import webpack_manifest from webpack_manifest
```

If you copied the source file in, import it with

```python
import webpack_manifest
```

Once you've imported the manifest loader...

```python
manifest = webpack_manifest.load(
    # An absolute path to a manifest file
    path='/abs/path/to/manifest.json',

    # The root url that your static assets are served from
    static_url='/static/',

    # optional args...
    # ----------------

    # Ensures that the manifest is flushed every time you call `load(...)`
    # If webpack is currently building, it will also delay until it's ready.
    # You'll want to set this to True in your development environment
    debug=False,

    # Max timeout (in seconds) that the loader will wait while webpack is building.
    # This setting is only used when the `debug` argument is True
    timeout=60,

    # If a manifest read fails during deserialization, a second attempt will be
    # made after a small delay. By default, if `read_retry` is `None` and `debug`
    # is `True`, it well be set to `1`
    read_retry=None,
)

# `load` returns a manifest object with properties that match the names of
# the entries in your webpack config. The properties matching your entries
# have `js` and `css` properties that are pre-rendered strings that point
# to all your JS and CSS assets. Additionally, tuples of relative urls are
# available under `rel_js` and `rel_css` properties.

# A string containing pre-rendered script elements for the "main" entry
manifest.main.js  # '<script src="/static/path/to/file.js"><script><script ... >'

# A string containing pre-rendered link elements for the "main" entry
manifest.main.css  # '<link rel="stylesheet" href="/static/path/to/file.css"><link ... >'

# A string containing pre-rendered link elements for the "vendor" entry
manifest.vendor.css  # '<link rel="stylesheet" href="/static/path/to/file.css"><link ... >'

# A tuple containing relative urls (without the static url) to the "vender" entry
manifest.vendor.rel_css  # ('path/to/file.css', 'path/to/another.css', ...)

# Note: If you don't name your entry, webpack will automatically name it "main".
```

repository: IlyaSemenov/python-webpack-manifest

repo_name: IlyaSemenov/python-webpack-manifest


text:
# OpenVPN for Docker for Mac with Kubernetess

OpenVPN server in a Docker container complete with an EasyRSA PKI CA customized to work out of the box with Docker for Mac running with Kubernetess. If you want to install the Docker for Mac and Kubernetess take a look at this [tutorial](https://rominirani.com/tutorial-getting-started-with-kubernetes-with-docker-on-mac-7f58467203fd)). When your Kubernretess is ready, please come back and deploy OpenVPN according to the Quickstart below.

This docker creates VPN network between Docker For Mac containers and the host mac itself. It allows you to communicate directly to services running as Docker containers running on IPs `<IP_ADDRESS>/16` but also is offering same direct routing to Kubernetess pods and services running by default on networks `<IP_ADDRESS>/16` and `<IP_ADDRESS>/16` and `<IP_ADDRESS>/16`.

## Quick Start
The deployment is straightforward just follow the steps below

* Initialize the ovpn-data container that will hold the configuration files and certificates

        docker volume create --name ovpn-data
        docker run -v ovpn-data:/etc/openvpn --rm onedata/docker-openvpn-kube-for-mac:1.3.0 ovpn_genconfig -u udp://localhost

* Create CA

You will be asked for password to CA, please set something longer than four characters and remember it for the next commands

        docker run -v ovpn-data:/etc/openvpn --rm -it onedata/docker-openvpn-kube-for-mac:1.3.0 ovpn_initpki

* Start OpenVPN server process

        docker run --dns <IP_ADDRESS> --restart=always -v ovpn-data:/etc/openvpn --name docker-openvpn-kube-for-mac -d -p 1194:1194/udp --cap-add=NET_ADMIN onedata/docker-openvpn-kube-for-mac:1.3.0

* Generate a client certificate without a passphrase

        docker run -v ovpn-data:/etc/openvpn --rm -it onedata/docker-openvpn-kube-for-mac:1.3.0 easyrsa build-client-full DockerForMac nopass

* Retrieve the client configuration with embedded certificates

        docker run -v ovpn-data:/etc/openvpn --rm onedata/docker-openvpn-kube-for-mac:1.3.0 ovpn_getclient DockerForMac > ~/Downloads/DockerForMac.ovpn

* Install OpenVPN Configuration
You need to have Tunnelblink installed on your system [https://tunnelblick.net/downloads.html].
Then just run command

        open ~/Downloads/DockerForMac.ovpn

After you that you will have configured Tunnelblink to communicate with your Docker for Mac environment and Kubernetess environment.

## How Does It Work?

Initialize the volume container using the `onedata/docker-openvpn-kube-for-mac:1.3.0` image with the
included scripts to automatically generate:

- Diffie-Hellman parameters
- a private key
- a self-certificate matching the private key for the OpenVPN server
- an EasyRSA CA key and certificate
- a TLS auth key from HMAC security

The OpenVPN server is started with the default run cmd of `ovpn_run`

The configuration is located in `/etc/openvpn`, and the Dockerfile
declares that directory as a volume. It means that you can start another
container with the `-v` argument, and access the configuration.
The volume also holds the PKI keys and certs so that it could be backed up.

To generate a client certificate, `onedata/docker-openvpn-kube-for-mac:1.3.0` uses EasyRSA via the
`easyrsa` command in the container's path.  The `EASYRSA_*` environmental
variables place the PKI CA under `/etc/openvpn/pki`.

Conveniently, `onedata/docker-openvpn-kube-for-mac:1.3.0` comes with a script called `ovpn_getclient`,
which dumps an inline OpenVPN client configuration file.  This single file can
then be given to a client for access to the VPN.

To enable Two Factor Authentication for clients (a.k.a. OTP) see [this document](/docs/otp.md).

# Differences to kylemanna/docker-openvpn
* This container is optimized to deliver fully transparent network routing to all Kubernetess and docker networks created by default after installing Docker for Mac with Kubernetess option enabled.
* It has built-in dnsmsq which redirect resolving all requests for domain .local to Kubernetess DNS and externally defined DNS resolver resolves everything else. The resolver must be set as the docker run argument (`--dns <IP_ADDRESS>` which will make  Google DNS <IP_ADDRESS> a default resolver). Take a look at example in section  "Start OpenVPN server process"
* Push it's own DNS resolver (`dnsmasq`) as the default one, thanks to that all `.local` domains are automatically resolvable by Kubernetess, and the rest is working too
* Push routing to `route <IP_ADDRESS> <IP_ADDRESS>` making routing to internal docker networks
* Push routing to `route <IP_ADDRESS> <IP_ADDRESS>` and `route <IP_ADDRESS> <IP_ADDRESS>` and `route <IP_ADDRESS> <IP_ADDRESS>` delivering routing to internal Kubernetes networks for pods and services.
* There is no `redirect-gateway def1` generated in `xx.ovpn` so no default route
* The main docker CMD is now supervisor which starts OpenVPN and dnsmasq

repository: showurl/docker-openvpn-kube-for-mac

repo_name: showurl/docker-openvpn-kube-for-mac


text:
# Shark
    Turn off PatchGuard in real time for win7 (7600) ~ later.

# Create labs
    md X:\Labs
    cd /d X:\Labs
    git clone https://github.com/9176324/Shark
    git clone https://github.com/9176324/MiniSDK

# Build
    Method 1: run FastBuild.cmd or Rebuild.cmd
    Method 2: MSBuild "Shark.sln" -t:Rebuild -p:Platform="x86"
              MSBuild "Shark.sln" -t:Rebuild -p:Platform="x64"
    Method 3: open "Shark.sln" with VisualStudio

# Install
    run Sea.exe (use vbox exploit to load)
![win11 disable virus](https://user-images.githubusercontent.com/4614528/139319409-1c3773f7-4c72-48bf-a415-29d018555bee.png)

# Uninstall
    restart windows

# Other projects link
    DisableWin10PatchguardPoc, https://github.com/killvxk/DisableWin10PatchguardPoc
    EfiGuard, https://github.com/Mattiwatti/EfiGuard
    findpg, https://github.com/tandasat/findpg
    PgResarch, https://github.com/tandasat/PgResarch
    UPGDSED, https://github.com/hfiref0x/UPGDSED

gha_language: C


text:
# Changelog
All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

## [2.0.2] - 2019-09-11

### Fixed
* `prop-types` was being used but not included as a dependency

## [2.0.1] - 2019-09-10

### Changed
* fixed security issues for `sshpk`, `cached-path-relative` and `mixin-deep`

## [2.0.0] - 2019-09-07

### Added
* dependency on `prop-types`

### Changed
* build folder is now `dist/`
* now building with `rollup`
* now providing CJS & ESM dist files (`main` and `module` in `package.json`)

## [1.0.0] - 2019-02-24

### Added
* responds to both `onChange` and `onInput` callbacks now

### Changed
* complete rewrite using React hooks. Minimum react peer dependency is now
  `>= 16.8`.

### Fixed
* includes a fix for #18

## [0.2.0] - 2018-08-08

### Added / Fixed
* addressed #14 where the `rows` attribute was being disregarded. Now, it
  provides a means to provide a minimum/default number of `rows`. This is a
  minorversion bump because it will cause the component to behave differently
  for existing folks and is really more of an addition than a fix.

## [0.1.10] - 2018-04-29

### Fixed
* fixed #10 where a change in the value prop was not recalculating the size

## [0.1.9] - 2017-10-05

### Fixed
* support for react v16

license: ISC

repository: raunofreiberg/react-expanding-textarea

gha_license_id: ISC

repo_name: raunofreiberg/react-expanding-textarea


text:
# HTTP Referrer-Policy Notes

The `Referrer-Policy` HTTP header controls how much referrer information (sent via the `Referer` header) should be included with requests.

See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy for details.

repository: dhurlburtusa/shortcuts

repo_name: dhurlburtusa/shortcuts


text:
**Organization**

In Sunbird, the user base is not just limited to individuals but it spans across organizations like schools, colleges, education boards & departments, etc. In broader terms, Sunbird architecture defines users as Organizations.

Following is the hierarchical structure of organization, the basic entity is a Member, where in a member can play following roles:

+ **Admin:** In Sunbird, the Admin has capabilities of adding or removing, changing the roles of other members. Also, an Admin can add or remove sub-hierarchical organizations.
+ **Member:** A member can be a part of an organization also a member can view other members of an organization too.

The Organization in Sunbird is designed around the following objects with following attributes:

+ **Organization:** Organization Id, Name, Description ,Parent Organization Id etc.
+ **Organization Members:** Organization Id,Member Id,Role,Date Joined etc.
+ **Organization Hierarchy:** Organization Id,Parent Organization Id,Relation.

**Users**

User Model contains the identity information that is required to uniquely identify the user and the static profile of the user and its demographic information, etc. A user can be a member of one or more organizations.
Typically, a user can be a member of one or more organizations. User Model in Sunbird contains the identity information that is required to uniquely identify the user and the static profile of the user like demographic information, etc. In addition, a user will have a profile that gets refined as users interact with Sunbird platform.

branch_name: refs/heads/dev

gha_language: HTML


text:
# AWS Step Functions with Cloudwatch and Lambda
Triggering AWS Step Functions from CloudWatch rule to execute a series of Lambda Functions based on condition.
Rules are cron jobs and set using **Cloudwatch event rule**. At some specified time it triggers the Step Function.
The execution flow is as follows:

1. Cloudwatch rule triggers step function (the state machine).
2. Initial state fires a lambda named *collector_lambda*.
3. Collector lambda executes its job and then pass its output to the next state.
4. This state decides based on the output of the collector_lambda which lambda to call next.
5. Based on the decision of the state, either the *sender_lambda* or *rejection_lambda* is fired.
6. The fired lambda returns output and the state machine reach its end.

# Commands To Manipulate Resources
First enter into **terraform** directory to run the following commands.

- Installs required terraform plugins. See more details
[**here**](https://www.terraform.io/docs/commands/init.html)
```
terraform init
```
- **View execution plan**
```
terraform plan --var-file input_value.tfvars
```

- **Apply the configurations**
```
terraform apply --var-file input_value.tfvars --auto-approve
```
Remove `--auto-approve` option from the above command to approve manually (by inputting prompt).

If the input file is named exactly `terraform.tfvars` or any variation of `*.auto.tfvars`, those
will be loaded automatically, you don't need to pass `--var-file` option with the command. In this
case the command is as following.
```
terraform apply --auto-approve
```
And, the **JSON** version of the input files follows the same above rules.

- **Destroy all resources**
```
terraform destroy --var-file input.tfvars --auto-approve
```
Remove `--auto-approve` option from the above command to approve manually (by inputting prompt).


text:
# Core Expansion Community Detection with Java and JGraphT
Open-source implementation of Core Expansion algorithm based on primitives of [JGraphT](https://jgrapht.org/). Original algorithm was described in:

Choumane et al., **Core expansion: a new community detection algorithm based on neighborhood overlap**, [Social Network Analysis and Mining 10, 30 (2020)](https://link.springer.com/article/10.1007/s13278-020-00647-6).

## How to use it?
To use it as command line application you need to have Java 11+

1) Clone repository https://github.com/kkudin/core-expansion
```shell
git clone https://github.com/kkudin/core-expansion.git
```

2) Build it with maven
```shell
mvn clean package
```

3) In target folder you can find .jar files, you need jar with dependencies
```
java -jar core-expansion-1.0-SNAPHOT-jar-with-dependencies.jar <arguments>
```

Input file is required option.

Available arguments:
* Comment char (default #) ```-c,--comment```
* Delimiter char (default ,) ```-d,--delimiter```
* Input file (required) ```-i,--inputFile```
* Result directory path (default results) ```-r,--resultPath```

Example
```shell
java -jar core-expansion-1.0-SNAPHOT-jar-with-dependencies.jar -i mygraph.tsv -d \t -c # -r mygraph_results
```

## References
If You want to use it in Your work please refer the original paper:
```text
@article{choumane2020core,
  title={Core expansion: a new community detection algorithm based on neighborhood overlap},
  author={Choumane, Ali and Awada, Ali and Harkous, Ali},
  journal={Social Network Analysis and Mining},
  volume={10},
  number={30},
  pages={30},
  year={2020},
  publisher={Springer}
}
```

repository: graphometrica/core-expansion

repo_name: graphometrica/core-expansion


text:
---
layout: post
title: Boot2root BrainFuck
subtitle: decoding weird texts
tags: [ctf, esoteric, writeups,steganography]
---

# First Thoughts

so after connecting we get that pika messages .
![Alt text](https://github.com/blackwarriorxtn/CTF_Writeups/blob/master/b00t2root_2k19/misc/Can_You_Read_Me/nc.png?raw=true)
the first thing will popup in our minds is pokemon

![Alt text](https://github.com/blackwarriorxtn/CTF_Writeups/blob/master/b00t2root_2k19/misc/Can_You_Read_Me/shock.gif?raw=true)

## Walkthrough

 but there is Pikalang wich is a joke esoteric programming language and its identical to brainfuck , except that the instructions are changed into the sounds made by Pikachu From Pokémon ,as you can see the table below each word have its instructions
![Alt text](https://github.com/blackwarriorxtn/CTF_Writeups/blob/master/b00t2root_2k19/misc/Can_You_Read_Me/pikalang.png?raw=true)

 we can use an interpreter to see what this means ,i found this one that is written in python and it works find thanks to
 jokesmithjohnson
 https://github.com/joelsmithjohnson/pikachu-interpreter

![Alt text](https://github.com/blackwarriorxtn/CTF_Writeups/blob/master/b00t2root_2k19/misc/Can_You_Read_Me/Hello%20World.png?raw=true)
 compiling it using the given interpreter will write out "hello world"

 we go back to nc and write HELLO WORLD , we get another esoteric lang
 ![Alt text](https://github.com/blackwarriorxtn/CTF_Writeups/blob/master/b00t2root_2k19/misc/Can_You_Read_Me/brain.png?raw=true)

 which is very obviously brainfuck , a simple google search is enough to identify it
 and for that we can use this online interpreter https://copy.sh/brainfuck/
 after running we get "This is f**/king my brain" so lets go and write that

 ![Alt text](https://github.com/blackwarriorxtn/CTF_Writeups/blob/master/b00t2root_2k19/misc/Can_You_Read_Me/brainoutput.png?raw=true)

this time we get the esoteric lang called Malbolge and by using this interpreter
 http://malbolge.doleczek.pl/ we will be able to get the flag
```
flag :

b00t2root{e50t3ric_langu4g35_ar3_1n5an3}
```


text:
## UDTL-based-Intelligent-Diagnosis

Source codes for the paper "Applications of Unsupervised Deep Transfer Learning to Intelligent Fault Diagnosis: A Survey and Comparative Study"

This repository contains the implementation details of our paper: [IEEE Transactions on Instrumentation and Measurement] **[Applications of Unsupervised Deep Transfer Learning to Intelligent Fault Diagnosis: A Survey and Comparative Study](https://ieeexplore.ieee.org/document/9552620)** by [Zhibin Zhao](https://zhaozhibin.github.io/), Qiyang Zhang, and Xiaolei Yu.
The methods about multi-domain TL can be found in (https://github.com/zhanghuanwang1/UDTL_multi_domain) and the methods about label-inconsistent TL can be found in (https://github.com/xiaoleimiao/UDTL_Lable_Inconsistent).
## Correction
* 2020.06.02, we modified the errors in util/train_utils_combines. (class_num --> num_classes).

## Guide
This project just provides the baseline (lower bound) accuracies and a unified intelligent fault diagnosis library based on unsupervised deep transfer learning (UDTL) which retains an extended interface for everyone to load their own datasets and models by themselves to carry out new studies.
Meanwhile, all the experiments are executed under Window 10 and Pytorch 1.3 through running on a computer with an Intel Core i7-9700K, GeForce RTX 2080Ti, and 16G RAM.

## Requirements
- Python 3.7
- Numpy 1.16.2
- Pandas 0.24.2
- Pickle
- tqdm 4.31.1
- sklearn 0.21.3
- Scipy 1.2.1
- opencv-python <IP_ADDRESS>
- PyWavelets 1.0.2
- pytorch >= 1.1
- torchvision >= 0.40

## Datasets
- **[CWRU Bearing Dataset](https://csegroups.case.edu/bearingdatacenter/pages/download-data-file/)**
- **[PU Bearing Dataset](https://mb.uni-paderborn.de/kat/forschung/datacenter/bearing-datacenter/)**
- **[PHM 2009](https://www.phmsociety.org/competition/PHM/09/apparatus)**
- **[SEU Gearbox Dataset](https://github.com/cathysiyu/Mechanical-datasets)**
- **[JNU Bearing Dataset](http://mad-net.org:8765/explore.html?t=0.5831516555847212.)**

## References

Part of the code refers to the following open source code:
- [CORAL.py](https://github.com/SSARCandy/DeepCORAL) from the paper "[Deep CORAL: Correlation Alignment for Deep Domain Adaptation](https://link.springer.com/chapter/10.1007/978-3-319-49409-8_35)" proposed by Sun et al.
- [DAN.py and JAN.py](https://github.com/thuml/Xlearn) from the paper "[Deep Transfer Learning with Joint Adaptation Networks](https://dl.acm.org/citation.cfm?id=3305909)" proposed by Long et al.
- [AdversarialNet.py and entropy_CDA.py](https://github.com/thuml/CDAN) from the paper "[Conditional adversarial domain adaptation](http://papers.nips.cc/paper/7436-conditional-adversarial-domain-adaptation)" proposed by Long et al.

## Pakages

This repository is organized as:
- [loss](https://github.com/ZhaoZhibin/DL-based-Intelligent-Diagnosis-Benchmark/tree/master/loss) contains different loss functions for Mapping-based DTL.
- [datasets](https://github.com/ZhaoZhibin/DL-based-Intelligent-Diagnosis-Benchmark/tree/master/datasets) contains the data augmentation methods and the Pytorch datasets for time and frequency domains.
- [models](https://github.com/ZhaoZhibin/DL-based-Intelligent-Diagnosis-Benchmark/tree/master/models) contains the models used in this project.
- [utils](https://github.com/ZhaoZhibin/DL-based-Intelligent-Diagnosis-Benchmark/tree/master/utils) contains the functions for realization of the training procedure.

## Usage
- download datasets
- use the train_base.py to test Basis and AdaBN (network-based DTL and instanced-based DTL)

- for example, use the following commands to test Basis for CWRU with the transfer_task 0-->1
- `python train_base.py --data_name CWRU --data_dir D:/Data/CWRU --transfer_task [0],[1] --adabn ""`
- for example, use the following commands to test AdaBN for CWRU with the transfer_task 0-->1
- `python train_base.py --data_name CWRU --data_dir D:/Data/CWRU --transfer_task [0],[1]`

- use the train_advanced.py to test (mapping-based DTL and adversarial-based DTL)
- for example, use the following commands to test DANN for CWRU with the transfer_task 0-->1
- `python train_advanced.py --data_name CWRU --data_dir D:/Data/CWRU --transfer_task [0],[1]  --last_batch "" --distance_metric "" --domain_adversarial True --adversarial_loss DA`
- for example, use the following commands to test MK-MMD for CWRU with the transfer_task 0-->1
- `python train_advanced.py --data_name CWRU --data_dir D:/Data/CWRU --transfer_task [0],[1] --last_batch True --distance_metric True --distance_loss MK-MMD --domain_adversarial "" `

## Citation
Codes:
```
@misc{Zhao2019,
author = {Zhibin Zhao and Qiyang Zhang and Xiaolei Yu and Chuang Sun and Shibin Wang and Ruqiang Yan and Xuefeng Chen},
title = {Unsupervised Deep Transfer Learning for Intelligent Fault Diagnosis},
year = {2019},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/ZhaoZhibin/UDTL}},
}
```
Paper:
```
@article{zhao2021applications,
  title={Applications of Unsupervised Deep Transfer Learning to Intelligent Fault Diagnosis: A Survey and Comparative Study},
  author={Zhibin Zhao and Qiyang Zhang and Xiaolei Yu and Chuang Sun and Shibin Wang and Ruqiang Yan and Xuefeng Chen},
  journal={IEEE Transactions on Instrumentation and Measurement},
  year={2021}
}
```
## Contact
-<EMAIL_ADDRESS>

repository: ZhaoZhibin/UDTL

repo_name: ZhaoZhibin/UDTL


text:
#Yii Highsoft - Hightchart and Highstock chart wrapper

HighsoftWidget is a wrapper to [Highcharts](http://www.highcharts.com/ "Highcharts Official Site") and [Highstock](http://www.highcharts.com/products/highstock "Highstock Official Site")
Highcharts is a charting library written in pure JavaScript;
Highstock lets you create stock or general timeline charts in pure JavaScript;
https://github.com/highslide-software/highcharts.com

## Features:
- Script to update assets from Highsoft github with auto minifier (Google Clousure API)
- Unique widget for Hightchart and Highstock
- Accepts valid PHP array or JSON string to options
- Global attributes for Highcharts object
- "More" option to register highcharts-more.js
- Unminified javascripts in YII_DEBUG mode
- No register jQuery dependency on ajax requests
- Only one script is loaded in multiple highcharts charts on ajax requests
- MIT License (Except assets)

## Example:

To use this widget, you need to insert the following code in a view:
```php
$this->Widget('ext.highsoft.HighsoftWidget', array(
   'type' => 'stock', // or 'chart'
   'options' => array(
      'title' => array(
         'text' => 'Fruit Consumption',
      ),
      'xAxis' => array(
         'categories' => array('Apples', 'Bananas', 'Oranges'),
      ),
      'yAxis' => array(
         'title' => array('text' => 'Fruit eaten'),
      ),
      'series' => array(
         array('name' => 'Jane', 'data' => array(1, 0, 4)),
         array('name' => 'John', 'data' => array(5, 7, 3)),
      )
   )
));
```
By configuring the **$options** property, you may specify the options
that need to be passed to the Highcharts Javascript object. Please refer to
the demo gallery and documentation on the [HighCharts Documentation Site](http://www.highcharts.com/) for possible options.

Alternatively, you can use a valid JSON string instead of an associative array to specify options:

```php
$this->Widget('ext.highsoft.HighsoftWidget', array(
   'type' => 'stock', // or 'chart'
   'options'=>'{
      "title": { "text": "Fruit Consumption" },
      "xAxis": {
         "categories": ["Apples", "Bananas", "Oranges"]
      },
      "yAxis": {
         "title": { "text": "Fruit eaten" }
      },
      "series": [
         { "name": "Jane", "data": [1, 0, 4] },
         { "name": "John", "data": [5, 7,3] }
      ]
   }'
));
```
Note: You must provide a valid JSON string (e.g. double quotes) when using
the second option. You can quickly validate your JSON string online using
[JSONLint](http://jsonlint.com/).

Note: You do not need to specify the chart->renderTo option as
is shown in many of the examples on the Highcharts website. This value is
automatically populated with the id of the widget's container element. If you
wish to use a different container, feel free to specify a custom value.

## ChangeLog
* **3.0.0** :
    - Updated Highcharts to Version 3.0.0 (2013-04-05)
    - Improved generation graphics for ajax requests
    - Chart container `div` tag not closing (fixed)

repository: mbaranyuk/ecomonitor

repo_name: mbaranyuk/ecomonitor


text:
Install Instructions
====================

SocketStream runs on all UNIX based platforms, including OS X and Linux.

### Mac OS X installation (tested on Snow Leopard 10.6.7)

    # install XCode, required for compiling software

    http://itunes.apple.com/gb/app/xcode/id422352214?mt=12

    # install Redis

    download the latest version from http://redis.io

    tar -xvzf redis-2.2.X.tar.gz
    cd redis-2.2.X
    make
    make test # this is optional, but they recommend it
    sudo make install

    to run in the foreground (and see incoming connections):
      redis-server

    to run in the background:
      env redis-server > /tmp/redis.log 2>&1 &

    # install Node.js

    Download latest stable (0.4.x) version from http://nodejs.org/#download

    E.g. for Node 0.4.9

    tar zxvf node-v0.4.9.tar.gz
    cd node-v0.4.9
    ./configure
    make # this will take a couple of minutes
    sudo make install

    # install npm

    curl http://npmjs.org/install.sh | sudo sh

    # install SocketStream

    sudo npm install socketstream -g

    # create a Socketstream app as a test

    socketstream new test
    cd test
    socketstream start

### Ubuntu 10.04 server installation

Here is an example that shows how to install SocketStream and it's dependencies on Ubuntu Server, including building Redis and Node.js from source:

    # install prerequisites
    sudo apt-get install build-essential automake git-core curl libssl-dev -y

    # install and run redis
    cd ~
    wget http://redis.googlecode.com/files/redis-2.2.4.tar.gz
    tar -xvzf redis-2.2.4.tar.gz
    cd redis-2.2.4
    make
    sudo make install
    env redis-server > /tmp/redis.log 2>&1 &

    # install Node.js

    Download latest stable (0.4.x) version from http://nodejs.org/#download

    E.g. for Node 0.4.9

    tar zxvf node-v0.4.9.tar.gz
    cd node-v0.4.9
    ./configure
    make # this will take a couple of minutes
    sudo make install

    # install npm
    curl http://npmjs.org/install.sh | sudo sh

    # install SocketStream
    sudo npm install socketstream -g

    # create a new socketstream project called 'test'
    cd ~
    socketstream new test

    # run test app
    cd test
    socketstream start


text:
---
title: "htmlDecode| MicrosoftDocs"
description: "The Client API method converts a string that has been HTML-encoded into a decoded string."
ms.date: 04/21/2021
ms.service: powerapps
ms.topic: "reference"
applies_to: "Dynamics 365 (online)"
ms.assetid: 4ef7160b-ac01-4d08-8a98-f8e3012ef20b
author: "Nkrb"
ms.author: "nabuthuk"
manager: "kvivek"
search.audienceType:
  - developer
search.app:
  - PowerApps
  - D365CE
---
# htmlDecode (Client API reference)

[!INCLUDE[./includes/htmlDecode-description.md](./includes/htmlDecode-description.md)]

## Syntax

`Xrm.Encoding.htmlDecode(arg)`

## Parameters

|Parameter Name        | Type           | Required  |Description  |
| ------------- |-------------| -----|-----|
|arg        | String           | Required  |HTML-encoded string to be decoded.  |

## Return Value

**Type**: String

**Description**: Decoded string.

## Related topics

[htmlEncode](htmlEncode.md)

[htmlAttributeEncode](htmlAttributeEncode.md)

[!INCLUDE[footer-include](../../../../../includes/footer-banner.md)]

repository: phuocle/Dynamics-Crm-DevKit

gha_language: C#

repo_name: phuocle/Dynamics-Crm-DevKit


text:
# JS-Number-Facts-App

JavaScript Number Facts Ajax & Fetch API

Repository: https://github.com/Mdudzik92/JS-Number-Facts-App

Deployed app: https://mdudzik92.github.io/JS-Number-Facts-App/

HTML, JavaScript, Ajax, Fetch API

This is an app which a user can add a number to the number input and a random fact about that number will be displayed below. Any number works, give it a try!

MIT

Email<EMAIL_ADDRESS>


text:
# **coloranalysis**
coloranalysis is a python package for calculating the percentage of area covered by one or more colors in an image.

### **Prerequisites**
numpy, opencv and matplotlib are required to execute coloranalysis, you can download them using the following commands:
```
pip install numpy
pip install opencv-python
pip install matplotlib
```

### **Installing**
You can either clone or download this repository, or use this command:
```
pip install coloranalysis
```

### **Usage**

See [this notebook](https://github.com/sravyadhulipala/coloranalysis/blob/master/example/colorAreasExample.ipynb) for an example program on how to use this package. However, reading this document entirely is recommended.

Let us consider this image of a rainbow.

<img src=https://github.com/sravyadhulipala/coloranalysis/blob/master/example/IPTestRainbow.jpg width="400" height="200">

To know the area covered by red color, or the area covered by multiple colors in the image, we should get the HEX codes using a [colorpicker.](https://imagecolorpicker.com/)

In the above image, HEX codes of all colors are: ["#FE0000", "#FD6400", "#FFFF02", "#008101", "#0000FE", "#4B0081", "#BC31FD"]

Import colorArea, the class that calculates the area of the colors we want, as follows.
```
from coloranalysis.colors import colorAreas
```
*colorAreas takes no arguments.*

**getArea**

*returns* a list of the percentages of area covered by the given colors.

*arguments*

- **hexColours**: A list of strings representing the HEX codes.
- **path**: A string specifying the path of the image.
- **diff**: An integer to determine the lower and upper boundaries of the given colors, in the HSV color space.

*hexColours - colour with a 'u'*

For a digital image as above, the recommended *diff* value is 10. While the recommended *diff* value for images of real-life objects is 30-50.
For more information on HSV color space, see [this link.](https://www.linuxtopia.org/online_books/graphics_tools/gimp_advanced_guide/gimp_guide_node51.html)

**detectColor**

*returns* a tuple with 'mask' and 'result' representing the pixels that match a single color

*arguments*
- **colour**: Values of the color in HSV color space, in the range H[0-360], S[0-100], V[0-100]
- **img**: A numpy array returned by cv2.imread()
- **hsv_img**: A numpy array returned by cv2.cvtColor()
- **diff**: An integer to determine the lower and upper boundaries of the given colors, in the HSV color space.

*colour - colour with a 'u'*

'mask' and 'result' can be used to visualize the presence of the color in the given image

**convertHEXColours**

*returns* a tuple with two lists representing values of the colors in HSV colorspace and RGB colorspace respectively.

*arguments*
- **hexColours**: A list of strings representing the HEX codes.

repository: sravyadhulipala/coloranalysis

repo_name: sravyadhulipala/coloranalysis


text:
---
authorName: Kevin Smith
canDelete: false
contentTrasformed: false
from: '"Kevin Smith" <lingua@...>'
headers.inReplyToHeader: PGdrdWdjbStiOXNnQGVHcm91cHMuY29tPg==
headers.messageIdInHeader: PGdrdm1wYys0aG45QGVHcm91cHMuY29tPg==
headers.referencesHeader: .nan
layout: email
msgId: 1104
msgSnippet: Several years ago, I learned Sona well enough to comfortably carry on
  an email conversation with a man in Russia. I figured at that point in time I was
nextInTime: 1105
nextInTopic: 1105
numMessagesInTopic: 4
postDate: '1232297580'
prevInTime: 1103
prevInTopic: 1102
profile: kevinbsmith
replyTo: LIST
senderId: IkK_z1PJYOIo2EMyfstQ3F15yXr8cL6hyKuJfch2zpnfZdooPCkb7OapmLeDqYI4a84Id-86ZmuxZdx3LKEtCVMWsaHxUw
spamInfo.isSpam: false
spamInfo.reason: '12'
systemMessage: false
title: 'Re: What do you think of the Sona language (Glosa vs Sona)?'
topicId: 1102
userId: 155310954
---

Several years ago, I learned Sona well enough to comfortably carry on
an em=
ail conversation with a man in Russia. I figured at that point in
time I wa=
s probably the world's leading authority on Sona.

It's a very clever idea,=
 and a reasonable initial implementation. I
appreciated that it was not jus=
t European, putting it in the same
category as loglan/lojban and ceqli. And=
 I feel strongly that small
vocabularies are better than large ones, so the=
 small number of roots
is appealing.

However, as you start to analyze the =
roots carefully, there are some
gaps and confusing parts, as well as some s=
exism (consider the roots
most closely associated with the words for "male"=
 and "female").

The agglutinative aspect ends up being something of a che=
at. Quoting
from the Sona book:

------
...the corresponding S. aki `swift=
' produces akizu `horse' =3D "swift
animal" =3D equus. It is true that "swi=
ft animal" would not necessarily
indicate `horse'; it might be a hare, a gr=
eyhound, a buck. But it has
become arbitrarily fixed in this sense, just as=
 the English word
`swift' has been fixed to name a cartain bird.
------

So=
 in effect, akizu has become another root, because its meaning
cannot be de=
rived from just the roots.

Similarly, consider the word "toreno", whose r=
oots literally mean
was-straight-vehicle. By convention, this is the word f=
or "train", so
really it becomes yet another root.

Also, the limited sou=
nd patterns seemed like they might be difficult
to distinguish in spoken co=
mmunication, and would lead to typos having
more dramatic effects. Having c=
onsistent word patterns seems like a
great idea, but has some downsides as =
well.

I considered creating an improved version of Sona, but ended up
deci=
ding that Glosa would be a better starting point for my own goals.
If someo=
ne created an improved Sona, I could imagine that it might
become my new fa=
vorite IAL/conlang.

Kevin

repository: fiasinstitute/glosa

repo_name: fiasinstitute/glosa


text:
# Flink AI Flow

## Introduction
Flink AI Flow is an open source framework that bridges big data and artificial intelligence.
It manages the entire machine learning project lifecycle as a unified workflow, including feature engineering,
model training, model evaluation, model service, model inference, monitoring, etc.
Throughout the entire workflow, Flink is used as the general purpose computing engine.

In addition to the capability of orchestrating a group of batch jobs,
by leveraging an event-based scheduler(enhanced version of Airflow),
Flink AI Flow also supports workflows that contain streaming jobs. Such capability is quite useful for complicated
real-time machine learning systems as well as other real-time workflows in general.

## Features
You can use Flink AI Flow to do the following:

![](https://raw.githubusercontent.com/wiki/alibaba/flink-ai-extended/images/functions.png)

1. Define the machine learning workflow including batch/stream jobs.

2. Manage metadata(generated by the machine learning workflow) of date sets, models, artifacts, metrics, jobs etc.

3. Schedule and run the machine learning workflow.

4. Publish and subscribe events

To support online machine learning scenarios, notification service and event-based schedulers are introduced.
Flink AI Flow's current components are:

1. SDK: It defines how to build a machine learning workflow and includes the api of the Flink AI Flow.

2. Notification Service: It provides event listening and notification functions.

3. Meta Service: It saves the meta data of the machine learning workflow.

4. Event-Based Scheduler: It is a scheduler that triggered jobs by some events happened.

## Documentation

### QuickStart

You can use Flink AI Flow according to the guidelines of [Quick Start](https://github.com/alibaba/flink-ai-extended/wiki/Quick-Start).
Besides, you can also take a look at our [Tutorial](https://github.com/alibaba/flink-ai-extended/wiki/Tutorial) for writing your own workflow.

### API

Please refer to the [API Documentation](https://flink-ai-flow-doc.readthedocs.io/en/latest/) to find the API supported by Flink AI Flow.

### Design

If you are interested in design principle of Flink AI Flow, please see the [Design Documentation](https://github.com/alibaba/flink-ai-extended/wiki/FlinkAIFlowDesign) for more
details.

### Examples

You can refer to some examples of Flink AI Flow to have a better understanding of how to write a workflow.
Please see the [Examples](https://github.com/alibaba/flink-ai-extended/tree/master/flink-ai-flow/examples/) directory.

## Reporting bugs
If you encounter any issues please open an issue in github and we encourage you to provide a patch through github pull request
as well.

## Contributing

We happily welcome contributions to Flink AI Flow. Please see our [contribution guide](https://github.com/alibaba/flink-ai-extended/blob/master/CONTRIBUTING.md) for details.

## Contact Us
For more information, you can join the **Flink AI Flow Users Group** on [DingTalk](https://www.dingtalk.com) to contact us.
The number of the DingTalk group is `35876083`.

You can also join the group by scanning the QR code below:

![](https://raw.githubusercontent.com/wiki/alibaba/flink-ai-extended/images/dingtalk_qr_code.png)

repository: wuchaochen/flink-ai-extended

gha_language: Python

repo_name: wuchaochen/flink-ai-extended


text:
# C MEMORY
The easiest way to keep this straight is with this mantra:
If you didn't get it from malloc or a function that got it from malloc, then
it's on the stack

- If you get a block of memory from malloc, and have that pointer on the stack,
then when the function exits, the pointer will get popped off and lost
- If you put too much data on the stack (like large structs and arrays) then you
can cause a "stack overflow" and the program will abort. In this case, use the
heap with malloc
- If you take a pointer to something on the stack, and then pass that or return
it from your function, then the function receiving it will "segmentation fault"
(segfault) because the actual data will get popped off and disappear. You'll be
pointing at dead space

repository: evanharmon/eph-headspace

repo_name: evanharmon/eph-headspace


text:
## :information_source: Getting Started
The quickest way to make this work locally is to use Docker, see the Docker setup guide [DOCKER_SETUP_GUIDE](/docker/README.md). Otherwise, for a local configuration, you will need the requirements below.

## :electric_plug: Requirements

* [Ruby](https://www.ruby-lang.org/en/): we recommend using
  [rbenv](https://github.com/rbenv/rbenv) to install the Ruby version listed on
  the badge.
* [Yarn](https://yarnpkg.com/) 1.x: please refer to their
  [installation guide](https://classic.yarnpkg.com/en/docs/install).
* [PostgreSQL](https://www.postgresql.org/) 11 or higher.
* [Redis](https://redis.io/) 4 or higher.

## :man_dancing: Get it running
First, you need to create the database user the app will use by manually typing the following in your terminal:

```bash
$ sudo -u postgres psql -c "CREATE USER root WITH SUPERUSER CREATEDB PASSWORD 'root'"
```

This will create the "root" user as superuser and allowing it to create databases.

Once done, run script/setup. If the script succeeds you're ready to start developing. If not, take a look at the output as it should be informative enough to help you troubleshoot.

```bash
$ scripts/setup
```

you have two options to run the application, one is using the `foreman`, and the other is `manually` uploading the servers.
  * foreman
    * startup
      ```bash
      $ bin/startup
      ```
  * manually
    * startup
      ```bash
      $ bundle exec rails server -p 3333
      ```
    * Here are some singleton commands you may need, usually in a separate instance/tab of your shell. Running the task's Sidekiq server mainly for email notifications and mailcatcher to verify emails..
      * Install mailcatcher
        ```bash
          $ gem install mailcatcher
        ```
      * startup mailcatcher
        ```bash
          $ mailcatcher
        ```
      * startup sidekiq
        ```bash
          $ bundle exec sidekiq
        ```

- Go to the app [http://localhost:3333](http://localhost:3333) to play around!
- Mailcatcher [http://localhost:1080](http://localhost:1080) to test sending emails!

## :toolbox: Testing
Tests, both unit and integration, are based on RSpec. To run the test suite. Then the main application tests can be run with:

```bash
$ bundle exec rspec
```
---

repository: nelsonwenner/devjobs

repo_name: nelsonwenner/devjobs


text:
* What are types?
  * They classify values.
  * What kind of types are typically used in Java? Most prominently product types, less so sum types.
* Introduction to Idris
  * explain and show examples for "type, define, refine"
  * with precise types, the compiler can help you with the implementation (proof search)
* How to use types effectively to make programming easier
  * Why you shouldn't use `Int`, `String`, or `Boolean`
  * More precise types help you with the implementation
* "make illegal states unrepresentable"
* Type first development
* Do not focus on safety. If we're using more types, the computer can do the boring work for us.

Resources:

1. http://tomasp.net/blog/type-first-development.aspx/
1. http://blog.ploeh.dk/2015/08/10/type-driven-development/

repository: fthomas/tdd-talk

repo_name: fthomas/tdd-talk