From fd5942f91e6b1b72b13d81f73ec4a1f8c35d7ecb Mon Sep 17 00:00:00 2001
From: Anoop HM <anoophm44@gmail.com>
Date: Fri, 8 Feb 2019 11:40:22 +0530
Subject: [PATCH] Issue # SB-10130 fix: constant DeviceId for all browser
 versions (#1409)

* Issue # SB-0000 fix: draft content limit fix

* Issue # SB-10130 fix: Device ID changes every time there is a new browser upgrade
---
 src/app/client/package-lock.json              | 557 +++++++++++++++++-
 src/app/client/package.json                   |   5 +-
 src/app/client/src/app/app.component.ts       |   4 +-
 .../core/services/user/user.service.ts        |  58 +-
 4 files changed, 594 insertions(+), 30 deletions(-)

diff --git a/src/app/client/package-lock.json b/src/app/client/package-lock.json
index 1bb726fdf7..f93aa3a5bd 100644
--- a/src/app/client/package-lock.json
+++ b/src/app/client/package-lock.json
@@ -2701,12 +2701,12 @@
       }
     },
     "@project-sunbird/telemetry-sdk": {
-      "version": "0.0.8",
-      "resolved": "https://registry.npmjs.org/@project-sunbird/telemetry-sdk/-/telemetry-sdk-0.0.8.tgz",
-      "integrity": "sha512-zqhHg8UwQy1a+GHY7pt7Nrry6VYbT6exTKS5rT7OjU8BhRO7ZBHQVA92KMH2C1xiFyBqXny9EldWkfIew2A9HA==",
+      "version": "0.0.12",
+      "resolved": "https://registry.npmjs.org/@project-sunbird/telemetry-sdk/-/telemetry-sdk-0.0.12.tgz",
+      "integrity": "sha512-x4emFHW5y+5ba7oOEpkyt2lOUzRRw0/Hfg+byzenY0xvs8L9hXpb19cVAalLSRzM8ADrFzLOdhDUrCnmRQbomg==",
       "requires": {
         "grunt-karma": "0.12.2",
-        "karma": "3.1.1"
+        "karma": "3.1.4"
       },
       "dependencies": {
         "anymatch": {
@@ -2716,6 +2716,16 @@
           "requires": {
             "micromatch": "3.1.10",
             "normalize-path": "2.1.1"
+          },
+          "dependencies": {
+            "normalize-path": {
+              "version": "2.1.1",
+              "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+              "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+              "requires": {
+                "remove-trailing-separator": "1.1.0"
+              }
+            }
           }
         },
         "arr-diff": {
@@ -2756,22 +2766,21 @@
           }
         },
         "chokidar": {
-          "version": "2.0.4",
-          "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz",
-          "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==",
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.0.tgz",
+          "integrity": "sha512-5t6G2SH8eO6lCvYOoUpaRnF5Qfd//gd7qJAkwRUw9qlGVkiQ13uwQngqbWWaurOsaAm9+kUGbITADxt6H0XFNQ==",
           "requires": {
             "anymatch": "2.0.0",
             "async-each": "1.0.1",
             "braces": "2.3.2",
-            "fsevents": "1.2.4",
+            "fsevents": "1.2.7",
             "glob-parent": "3.1.0",
             "inherits": "2.0.3",
             "is-binary-path": "1.0.1",
             "is-glob": "4.0.0",
-            "lodash.debounce": "4.0.8",
-            "normalize-path": "2.1.1",
+            "normalize-path": "3.0.0",
             "path-is-absolute": "1.0.1",
-            "readdirp": "2.1.0",
+            "readdirp": "2.2.1",
             "upath": "1.1.0"
           }
         },
@@ -2816,7 +2825,7 @@
         },
         "engine.io-client": {
           "version": "3.2.1",
-          "resolved": "http://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz",
+          "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz",
           "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==",
           "requires": {
             "component-emitter": "1.2.1",
@@ -2998,6 +3007,468 @@
             "unpipe": "1.0.0"
           }
         },
+        "fsevents": {
+          "version": "1.2.7",
+          "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz",
+          "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==",
+          "optional": true,
+          "requires": {
+            "nan": "2.10.0",
+            "node-pre-gyp": "0.10.3"
+          },
+          "dependencies": {
+            "abbrev": {
+              "version": "1.1.1",
+              "bundled": true,
+              "optional": true
+            },
+            "ansi-regex": {
+              "version": "2.1.1",
+              "bundled": true
+            },
+            "aproba": {
+              "version": "1.2.0",
+              "bundled": true,
+              "optional": true
+            },
+            "are-we-there-yet": {
+              "version": "1.1.5",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "delegates": "1.0.0",
+                "readable-stream": "2.3.6"
+              }
+            },
+            "balanced-match": {
+              "version": "1.0.0",
+              "bundled": true
+            },
+            "brace-expansion": {
+              "version": "1.1.11",
+              "bundled": true,
+              "requires": {
+                "balanced-match": "1.0.0",
+                "concat-map": "0.0.1"
+              }
+            },
+            "chownr": {
+              "version": "1.1.1",
+              "bundled": true,
+              "optional": true
+            },
+            "code-point-at": {
+              "version": "1.1.0",
+              "bundled": true
+            },
+            "concat-map": {
+              "version": "0.0.1",
+              "bundled": true
+            },
+            "console-control-strings": {
+              "version": "1.1.0",
+              "bundled": true
+            },
+            "core-util-is": {
+              "version": "1.0.2",
+              "bundled": true,
+              "optional": true
+            },
+            "debug": {
+              "version": "2.6.9",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "ms": "2.0.0"
+              }
+            },
+            "deep-extend": {
+              "version": "0.6.0",
+              "bundled": true,
+              "optional": true
+            },
+            "delegates": {
+              "version": "1.0.0",
+              "bundled": true,
+              "optional": true
+            },
+            "detect-libc": {
+              "version": "1.0.3",
+              "bundled": true,
+              "optional": true
+            },
+            "fs-minipass": {
+              "version": "1.2.5",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "minipass": "2.3.5"
+              }
+            },
+            "fs.realpath": {
+              "version": "1.0.0",
+              "bundled": true,
+              "optional": true
+            },
+            "gauge": {
+              "version": "2.7.4",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "aproba": "1.2.0",
+                "console-control-strings": "1.1.0",
+                "has-unicode": "2.0.1",
+                "object-assign": "4.1.1",
+                "signal-exit": "3.0.2",
+                "string-width": "1.0.2",
+                "strip-ansi": "3.0.1",
+                "wide-align": "1.1.3"
+              }
+            },
+            "glob": {
+              "version": "7.1.3",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "fs.realpath": "1.0.0",
+                "inflight": "1.0.6",
+                "inherits": "2.0.3",
+                "minimatch": "3.0.4",
+                "once": "1.4.0",
+                "path-is-absolute": "1.0.1"
+              }
+            },
+            "has-unicode": {
+              "version": "2.0.1",
+              "bundled": true,
+              "optional": true
+            },
+            "iconv-lite": {
+              "version": "0.4.24",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "safer-buffer": "2.1.2"
+              }
+            },
+            "ignore-walk": {
+              "version": "3.0.1",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "minimatch": "3.0.4"
+              }
+            },
+            "inflight": {
+              "version": "1.0.6",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "once": "1.4.0",
+                "wrappy": "1.0.2"
+              }
+            },
+            "inherits": {
+              "version": "2.0.3",
+              "bundled": true
+            },
+            "ini": {
+              "version": "1.3.5",
+              "bundled": true,
+              "optional": true
+            },
+            "is-fullwidth-code-point": {
+              "version": "1.0.0",
+              "bundled": true,
+              "requires": {
+                "number-is-nan": "1.0.1"
+              }
+            },
+            "isarray": {
+              "version": "1.0.0",
+              "bundled": true,
+              "optional": true
+            },
+            "minimatch": {
+              "version": "3.0.4",
+              "bundled": true,
+              "requires": {
+                "brace-expansion": "1.1.11"
+              }
+            },
+            "minimist": {
+              "version": "0.0.8",
+              "bundled": true
+            },
+            "minipass": {
+              "version": "2.3.5",
+              "bundled": true,
+              "requires": {
+                "safe-buffer": "5.1.2",
+                "yallist": "3.0.3"
+              }
+            },
+            "minizlib": {
+              "version": "1.2.1",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "minipass": "2.3.5"
+              }
+            },
+            "mkdirp": {
+              "version": "0.5.1",
+              "bundled": true,
+              "requires": {
+                "minimist": "0.0.8"
+              }
+            },
+            "ms": {
+              "version": "2.0.0",
+              "bundled": true,
+              "optional": true
+            },
+            "needle": {
+              "version": "2.2.4",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "debug": "2.6.9",
+                "iconv-lite": "0.4.24",
+                "sax": "1.2.4"
+              }
+            },
+            "node-pre-gyp": {
+              "version": "0.10.3",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "detect-libc": "1.0.3",
+                "mkdirp": "0.5.1",
+                "needle": "2.2.4",
+                "nopt": "4.0.1",
+                "npm-packlist": "1.2.0",
+                "npmlog": "4.1.2",
+                "rc": "1.2.8",
+                "rimraf": "2.6.3",
+                "semver": "5.6.0",
+                "tar": "4.4.8"
+              }
+            },
+            "nopt": {
+              "version": "4.0.1",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "abbrev": "1.1.1",
+                "osenv": "0.1.5"
+              }
+            },
+            "npm-bundled": {
+              "version": "1.0.5",
+              "bundled": true,
+              "optional": true
+            },
+            "npm-packlist": {
+              "version": "1.2.0",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "ignore-walk": "3.0.1",
+                "npm-bundled": "1.0.5"
+              }
+            },
+            "npmlog": {
+              "version": "4.1.2",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "are-we-there-yet": "1.1.5",
+                "console-control-strings": "1.1.0",
+                "gauge": "2.7.4",
+                "set-blocking": "2.0.0"
+              }
+            },
+            "number-is-nan": {
+              "version": "1.0.1",
+              "bundled": true
+            },
+            "object-assign": {
+              "version": "4.1.1",
+              "bundled": true,
+              "optional": true
+            },
+            "once": {
+              "version": "1.4.0",
+              "bundled": true,
+              "requires": {
+                "wrappy": "1.0.2"
+              }
+            },
+            "os-homedir": {
+              "version": "1.0.2",
+              "bundled": true,
+              "optional": true
+            },
+            "os-tmpdir": {
+              "version": "1.0.2",
+              "bundled": true,
+              "optional": true
+            },
+            "osenv": {
+              "version": "0.1.5",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "os-homedir": "1.0.2",
+                "os-tmpdir": "1.0.2"
+              }
+            },
+            "path-is-absolute": {
+              "version": "1.0.1",
+              "bundled": true,
+              "optional": true
+            },
+            "process-nextick-args": {
+              "version": "2.0.0",
+              "bundled": true,
+              "optional": true
+            },
+            "rc": {
+              "version": "1.2.8",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "deep-extend": "0.6.0",
+                "ini": "1.3.5",
+                "minimist": "1.2.0",
+                "strip-json-comments": "2.0.1"
+              },
+              "dependencies": {
+                "minimist": {
+                  "version": "1.2.0",
+                  "bundled": true,
+                  "optional": true
+                }
+              }
+            },
+            "readable-stream": {
+              "version": "2.3.6",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "core-util-is": "1.0.2",
+                "inherits": "2.0.3",
+                "isarray": "1.0.0",
+                "process-nextick-args": "2.0.0",
+                "safe-buffer": "5.1.2",
+                "string_decoder": "1.1.1",
+                "util-deprecate": "1.0.2"
+              }
+            },
+            "rimraf": {
+              "version": "2.6.3",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "glob": "7.1.3"
+              }
+            },
+            "safe-buffer": {
+              "version": "5.1.2",
+              "bundled": true
+            },
+            "safer-buffer": {
+              "version": "2.1.2",
+              "bundled": true,
+              "optional": true
+            },
+            "sax": {
+              "version": "1.2.4",
+              "bundled": true,
+              "optional": true
+            },
+            "semver": {
+              "version": "5.6.0",
+              "bundled": true,
+              "optional": true
+            },
+            "set-blocking": {
+              "version": "2.0.0",
+              "bundled": true,
+              "optional": true
+            },
+            "signal-exit": {
+              "version": "3.0.2",
+              "bundled": true,
+              "optional": true
+            },
+            "string-width": {
+              "version": "1.0.2",
+              "bundled": true,
+              "requires": {
+                "code-point-at": "1.1.0",
+                "is-fullwidth-code-point": "1.0.0",
+                "strip-ansi": "3.0.1"
+              }
+            },
+            "string_decoder": {
+              "version": "1.1.1",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "safe-buffer": "5.1.2"
+              }
+            },
+            "strip-ansi": {
+              "version": "3.0.1",
+              "bundled": true,
+              "requires": {
+                "ansi-regex": "2.1.1"
+              }
+            },
+            "strip-json-comments": {
+              "version": "2.0.1",
+              "bundled": true,
+              "optional": true
+            },
+            "tar": {
+              "version": "4.4.8",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "chownr": "1.1.1",
+                "fs-minipass": "1.2.5",
+                "minipass": "2.3.5",
+                "minizlib": "1.2.1",
+                "mkdirp": "0.5.1",
+                "safe-buffer": "5.1.2",
+                "yallist": "3.0.3"
+              }
+            },
+            "util-deprecate": {
+              "version": "1.0.2",
+              "bundled": true,
+              "optional": true
+            },
+            "wide-align": {
+              "version": "1.1.3",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "string-width": "1.0.2"
+              }
+            },
+            "wrappy": {
+              "version": "1.0.2",
+              "bundled": true
+            },
+            "yallist": {
+              "version": "3.0.3",
+              "bundled": true
+            }
+          }
+        },
         "glob-parent": {
           "version": "3.1.0",
           "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
@@ -3085,13 +3556,13 @@
           "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
         },
         "karma": {
-          "version": "3.1.1",
-          "resolved": "https://registry.npmjs.org/karma/-/karma-3.1.1.tgz",
-          "integrity": "sha512-NetT3wPCQMNB36uiL9LLyhrOt8SQwrEKt0xD3+KpTCfm0VxVyUJdPL5oTq2Ic5ouemgL/Iz4wqXEbF3zea9kQQ==",
+          "version": "3.1.4",
+          "resolved": "https://registry.npmjs.org/karma/-/karma-3.1.4.tgz",
+          "integrity": "sha512-31Vo8Qr5glN+dZEVIpnPCxEGleqE0EY6CtC2X9TagRV3rRQ3SNrvfhddICkJgUK3AgqpeKSZau03QumTGhGoSw==",
           "requires": {
             "bluebird": "3.5.1",
             "body-parser": "1.18.2",
-            "chokidar": "2.0.4",
+            "chokidar": "2.1.0",
             "colors": "1.3.1",
             "combine-lists": "1.0.1",
             "connect": "3.6.6",
@@ -3099,13 +3570,14 @@
             "di": "0.0.1",
             "dom-serialize": "2.2.1",
             "expand-braces": "0.1.2",
+            "flatted": "2.0.0",
             "glob": "7.1.2",
             "graceful-fs": "4.1.11",
             "http-proxy": "1.17.0",
             "isbinaryfile": "3.0.3",
             "lodash": "4.17.10",
             "log4js": "3.0.6",
-            "mime": "2.3.1",
+            "mime": "2.4.0",
             "minimatch": "3.0.4",
             "optimist": "0.6.1",
             "qjobs": "1.2.0",
@@ -3115,7 +3587,7 @@
             "socket.io": "2.1.1",
             "source-map": "0.6.1",
             "tmp": "0.0.33",
-            "useragent": "2.2.1"
+            "useragent": "2.3.0"
           }
         },
         "kind-of": {
@@ -3166,15 +3638,30 @@
           }
         },
         "mime": {
-          "version": "2.3.1",
-          "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz",
-          "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg=="
+          "version": "2.4.0",
+          "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz",
+          "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w=="
         },
         "ms": {
           "version": "2.1.1",
           "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
           "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
         },
+        "normalize-path": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+          "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
+        },
+        "readdirp": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
+          "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+          "requires": {
+            "graceful-fs": "4.1.11",
+            "micromatch": "3.1.10",
+            "readable-stream": "2.3.6"
+          }
+        },
         "socket.io": {
           "version": "2.1.1",
           "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz",
@@ -3241,7 +3728,7 @@
         },
         "socket.io-parser": {
           "version": "3.2.0",
-          "resolved": "http://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz",
+          "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz",
           "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==",
           "requires": {
             "component-emitter": "1.2.1",
@@ -3273,6 +3760,15 @@
           "version": "1.3.1",
           "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
           "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4="
+        },
+        "useragent": {
+          "version": "2.3.0",
+          "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz",
+          "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==",
+          "requires": {
+            "lru-cache": "4.1.3",
+            "tmp": "0.0.33"
+          }
         }
       }
     },
@@ -7917,6 +8413,11 @@
       "resolved": "https://registry.npmjs.org/fine-uploader/-/fine-uploader-5.16.2.tgz",
       "integrity": "sha1-DYeNoc0nU/gGg6wJHfXa/5/7jEQ="
     },
+    "flatted": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.0.tgz",
+      "integrity": "sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg=="
+    },
     "flush-write-stream": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz",
@@ -11446,7 +11947,8 @@
     "lodash.debounce": {
       "version": "4.0.8",
       "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
-      "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168="
+      "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=",
+      "dev": true
     },
     "lodash.defaults": {
       "version": "4.2.0",
@@ -16045,6 +16547,11 @@
       "integrity": "sha512-p5TCYZDAO0m4G344hD+wx/LATebLWZNkkh2asWUFqSsD2OrDNhbAHuSjobrmsUmdzjJjEeZVU9g1h3O6vpstnw==",
       "dev": true
     },
+    "ua-parser-js": {
+      "version": "0.7.19",
+      "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.19.tgz",
+      "integrity": "sha512-T3PVJ6uz8i0HzPxOF9SWzWAlfN/DavlpQqepn22xgve/5QecC+XMCAtmUNnY7C9StehaV6exjUCI801lOI7QlQ=="
+    },
     "uglify-js": {
       "version": "3.4.7",
       "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.7.tgz",
@@ -16339,6 +16846,7 @@
       "version": "2.2.1",
       "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.2.1.tgz",
       "integrity": "sha1-z1k+9PLRdYdei7ZY6pLhik/QbY4=",
+      "dev": true,
       "requires": {
         "lru-cache": "2.2.4",
         "tmp": "0.0.33"
@@ -16347,7 +16855,8 @@
         "lru-cache": {
           "version": "2.2.4",
           "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz",
-          "integrity": "sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0="
+          "integrity": "sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0=",
+          "dev": true
         }
       }
     },
diff --git a/src/app/client/package.json b/src/app/client/package.json
index e865972ecd..3216b8e113 100644
--- a/src/app/client/package.json
+++ b/src/app/client/package.json
@@ -33,7 +33,7 @@
     "@angular/platform-browser": "^6.0.7",
     "@angular/platform-browser-dynamic": "^6.0.7",
     "@angular/router": "^6.0.7",
-    "@project-sunbird/telemetry-sdk": "0.0.8",
+    "@project-sunbird/telemetry-sdk": "0.0.12",
     "@project-sunbird/web-extensions": "^0.0.2",
     "@types/lodash": "^4.14.104",
     "@types/moment-duration-format": "^2.2.0",
@@ -69,6 +69,7 @@
     "slick-carousel": "1.6.0",
     "time-ago-pipe": "^1.3.2",
     "tree-model": "^1.0.6",
+    "ua-parser-js": "^0.7.19",
     "zone.js": "^0.8.19"
   },
   "devDependencies": {
@@ -100,4 +101,4 @@
     "typescript": "~2.7.2",
     "@angular-devkit/build-angular": "~0.6.8"
   }
-}
\ No newline at end of file
+}
diff --git a/src/app/client/src/app/app.component.ts b/src/app/client/src/app/app.component.ts
index e05dfb50e8..caa43d051b 100644
--- a/src/app/client/src/app/app.component.ts
+++ b/src/app/client/src/app/app.component.ts
@@ -11,7 +11,6 @@ import { Observable, of, throwError, combineLatest } from 'rxjs';
 import { first, filter, mergeMap, tap, map } from 'rxjs/operators';
 import { CacheService } from 'ng2-cache-service';
 import { DOCUMENT } from '@angular/platform-browser';
-const fingerPrint2 = new Fingerprint2();
 
 /**
  * main app component
@@ -146,7 +145,8 @@ export class AppComponent implements OnInit {
    * fetch device id using fingerPrint2 library.
    */
   public setDeviceId(): Observable<string> {
-    return new Observable(observer => fingerPrint2.get((deviceId) => {
+    const options = this.userService.getFingerPrintOptions();
+    return new Observable(observer => Fingerprint2.getV18(options, (deviceId) => {
       (<HTMLInputElement>document.getElementById('deviceId')).value = deviceId;
       observer.next(deviceId);
       observer.complete();
diff --git a/src/app/client/src/app/modules/core/services/user/user.service.ts b/src/app/client/src/app/modules/core/services/user/user.service.ts
index 29d3b9047a..e51a1557e4 100644
--- a/src/app/client/src/app/modules/core/services/user/user.service.ts
+++ b/src/app/client/src/app/modules/core/services/user/user.service.ts
@@ -9,6 +9,8 @@ import * as _ from 'lodash';
 import { HttpClient } from '@angular/common/http';
 import { PublicDataService } from './../public-data/public-data.service';
 import { skipWhile } from 'rxjs/operators';
+import * as UAParser from 'ua-parser-js';
+
 /**
  * Service to fetch user details from server
  *
@@ -335,8 +337,8 @@ export class UserService {
    * method to log session start
    */
   public startSession(): void {
-    const fingerPrint2 = new Fingerprint2();
-    fingerPrint2.get((result, components) => {
+    const options = this.getFingerPrintOptions();
+    Fingerprint2.getV18(options, (result) => {
       const url = `/v1/user/session/start/${result}`;
       this.http.get(url).subscribe();
     });
@@ -345,4 +347,56 @@ export class UserService {
   getUserByKey(key) {
     return this.learnerService.get({ url: this.config.urlConFig.URLS.USER.GET_USER_BY_KEY + '/' + key});
   }
+  public getFingerPrintOptions(): object {
+    return ({
+      preprocessor: (key, value) => {
+        if (key === 'userAgent') {
+          const parser = new UAParser(value); // https://github.com/faisalman/ua-parser-js
+          const userAgentMinusVersion = parser.getOS().name + ' ' + parser.getBrowser().name;
+          return userAgentMinusVersion;
+        }
+        return value;
+      },
+      audio: {
+        timeout: 1000,
+        excludeIOS11: true
+      },
+      fonts: {
+        swfContainerId: 'fingerprintjs2',
+        swfPath: 'flash/compiled/FontList.swf',
+        userDefinedFonts: [],
+        extendedJsFonts: false
+      },
+      screen: {
+        detectScreenOrientation: true
+      },
+      plugins: {
+        sortPluginsFor: [/palemoon/i],
+        excludeIE: false
+      },
+      extraComponents: [],
+      excludes: {
+        // Unreliable on Windows, see https://github.com/Valve/fingerprintjs2/issues/375
+        'enumerateDevices': true,
+        // devicePixelRatio depends on browser zoom, and it's impossible to detect browser zoom
+        'pixelRatio': true,
+        // DNT depends on incognito mode for some browsers (Chrome) and it's impossible to detect incognito mode
+        'doNotTrack': true,
+        // uses js fonts already
+        'fontsFlash': true,
+        'canvas': true,
+        'screenResolution': true,
+        'availableScreenResolution': true,
+        'touchSupport': true,
+        'plugins': true,
+        'webgl': true,
+        'audio': true,
+        'language': true,
+        'deviceMemory': true
+      },
+      NOT_AVAILABLE: 'not available',
+      ERROR: 'error',
+      EXCLUDED: 'excluded'
+    });
+  }
 }
-- 
GitLab