PageSourceSearch

https://sixsigmafunnels.com/src/app/modules/auth/core/Auth.tsx

js sixsigmafunnels.com collected 2026-10-02 01:44:13 UTC 19,800 bytes, 220 lines download raw bytes

1import { createHotContext as __vite__createHotContext } from "/@vite/client";import.meta.hot = __vite__createHotContext("/src/app/modules/auth/core/Auth.tsx");if (!window.$RefreshReg$) throw new Error("React refresh preamble was not loaded. Something is wrong.");
2const prevRefreshReg = window.$RefreshReg$;
3const prevRefreshSig = window.$RefreshSig$;
4window.$RefreshReg$ = RefreshRuntime.getRefreshReg("/data/sixsigma/six-sigma-ui/src/app/modules/auth/core/Auth.tsx");
5window.$RefreshSig$ = RefreshRuntime.createSignatureFunctionForTransform;
6
7import * as RefreshRuntime from "/@react-refresh";
8
9/* eslint-disable react-refresh/only-export-components */ import __vite__cjsImport1_react_jsxDevRuntime from "/node_modules/.vite/deps/react_jsx-dev-runtime.js?v=e8ce80ae"; const _jsxDEV = __vite__cjsImport1_react_jsxDevRuntime["jsxDEV"]; const _Fragment = __vite__cjsImport1_react_jsxDevRuntime["Fragment"];
10var _s = $RefreshSig$(), _s1 = $RefreshSig$(), _s2 = $RefreshSig$(), _s3 = $RefreshSig$(), _s4 = $RefreshSig$(), _s5 = $RefreshSig$(), _s6 = $RefreshSig$(), _s7 = $RefreshSig$();
11import __vite__cjsImport2_react from "/node_modules/.vite/deps/react.js?v=e8ce80ae"; const createContext = __vite__cjsImport2_react["createContext"]; const useContext = __vite__cjsImport2_react["useContext"]; const useEffect = __vite__cjsImport2_react["useEffect"]; const useState = __vite__cjsImport2_react["useState"];
12import { LayoutSplashScreen } from "/src/config/layout/core/index.ts";
13import { getUserByToken } from "/src/app/modules/auth/core/_requests.ts";
14import * as authHelper from "/src/app/modules/auth/core/AuthHelpers.ts";
15import { initializeUserTimeZone } from "/src/app/DateConstants.tsx";
16const initAuthContextPropsState = {
17    auth: authHelper.getAuth(),
18    saveAuth: ()=>{},
19    currentUser: undefined,
20    setCurrentUser: ()=>{},
21    logout: ()=>{}
22};
23const AuthContext = /*#__PURE__*/ createContext(initAuthContextPropsState);
24const useAuth = ()=>{
25    _s();
26    return useContext(AuthContext);
27};
28_s(useAuth, "gDsCjeeItUuvgOWf1v4qoK9RF6k=");
29const getCurrentUserAuthorities = ()=>{
30    _s1();
31    const auth = useAuth();
32    if (auth.currentUser != undefined) {
33        const user = auth.currentUser;
34        return user.authorities;
35    }
36    return new Array();
37};
38_s1(getCurrentUserAuthorities, "YuJWYXaKIY31b1y7U6yy3IXSxQA=", false, function() {
39    return [
40        useAuth
41    ];
42});
43const getCurrentUserCompanyAuthorities = (companyId)=>{
44    _s2();
45    const auth = useAuth();
46    if (auth.currentUser) {
47        const user = auth.currentUser;
48        const company = user.companies.find((c)=>c.id === companyId);
49        if (company) {
50            return company.authorities; // Return the authorities for the found company
51        }
52    }
53    return []; // Return an empty array if no matching company or user is found
54};
55_s2(getCurrentUserCompanyAuthorities, "YuJWYXaKIY31b1y7U6yy3IXSxQA=", false, function() {
56    return [
57        useAuth
58    ];
59});
60const getCurrentUserFirstCompany = ()=>{
61    _s3();
62    const auth = useAuth();
63    if (auth.currentUser) {
64        const user = auth.currentUser;
65        // Return the first company object if available
66        if (user.companies && user.companies.length > 0) {
67            return user.companies[0];
68        }
69    }
70    return null; // Return null if no companies are available
71};
72_s3(getCurrentUserFirstCompany, "YuJWYXaKIY31b1y7U6yy3IXSxQA=", false, function() {
73    return [
74        useAuth
75    ];
76});
77const getCurrentUserCompanies = ()=>{
78    _s4();
79    const auth = useAuth();
80    if (auth.currentUser) {
81        const user = auth.currentUser;
82        return user.companies;
83    }
84    return null; // Return null if no companies are available
85};
86_s4(getCurrentUserCompanies, "YuJWYXaKIY31b1y7U6yy3IXSxQA=", false, function() {
87    return [
88        useAuth
89    ];
90});
91const getCurrentUserDetails = (companyId)=>{
92    _s5();
93    const auth = useAuth();
94    let company;
95    if (auth.currentUser) {
96        const user = auth.currentUser;
97        if (user.companies.length > 0) {
98            if (companyId > 0) {
99                company = user.companies.find((c)=>c.id === companyId);
100            } else {
101                company = user.companies[0];
102            }
103        } else {
104            // No company is available
105            return null;
106        }
107        if (company) {
108            auth.currentUser.companies = [
109                company
110            ];
111        } else {
112            // No matching company found
113            return null;
114        }
115    }
116    return auth.currentUser;
117};
118_s5(getCurrentUserDetails, "YuJWYXaKIY31b1y7U6yy3IXSxQA=", false, function() {
119    return [
120        useAuth
121    ];
122});
123const AuthProvider = ({ children })=>{
124    _s6();
125    const [auth, setAuth] = useState(authHelper.getAuth());
126    const [currentUser, setCurrentUser] = useState();
127    const saveAuth = (auth)=>{
128        setAuth(auth);
129        if (auth) {
130            authHelper.setAuth(auth);
131        } else {
132            authHelper.removeAuth();
133        }
134    };
135    const logout = ()=>{
136        saveAuth(undefined);
137        setCurrentUser(undefined);
138    };
139    return /*#__PURE__*/ _jsxDEV(AuthContext.Provider, {
140        value: {
141            auth,
142            saveAuth,
143            currentUser,
144            setCurrentUser,
145            logout
146        },
147        children: children
148    }, void 0, false, {
149        fileName: "/data/sixsigma/six-sigma-ui/src/app/modules/auth/core/Auth.tsx",
150        lineNumber: 126,
151        columnNumber: 5
152    }, this);
153};
154_s6(AuthProvider, "G82xl4FfwRiphoqVowsoibmuR5g=");
155_c = AuthProvider;
156const AuthInit = ({ children })=>{
157    _s7();
158    const { auth, currentUser, logout, setCurrentUser } = useAuth();
159    const [showSplashScreen, setShowSplashScreen] = useState(true);
160    // We should request user by authToken (IN OUR EXAMPLE IT'S API_TOKEN) before rendering the application
161    useEffect(()=>{
162        const requestUser = async (apiToken)=>{
163            try {
164                if (!currentUser) {
165                    const { data } = await getUserByToken(apiToken);
166                    if (data) {
167                        setCurrentUser(data);
168                        await initializeUserTimeZone(data);
169                    }
170                }
171            } catch (error) {
172                console.error(error);
173                if (currentUser) {
174                    logout();
175                }
176            } finally{
177                setShowSplashScreen(false);
178            }
179        };
180        if (auth && auth.api_token) {
181            requestUser(auth.api_token);
182        } else {
183            logout();
184            setShowSplashScreen(false);
185        }
186    // eslint-disable-next-line
187    }, []);
188    return showSplashScreen ? /*#__PURE__*/ _jsxDEV(LayoutSplashScreen, {}, void 0, false, {
189        fileName: "/data/sixsigma/six-sigma-ui/src/app/modules/auth/core/Auth.tsx",
190        lineNumber: 166,
191        columnNumber: 29
192    }, this) : /*#__PURE__*/ _jsxDEV(_Fragment, {
193        children: children
194    }, void 0, false);
195};
196_s7(AuthInit, "DaNjeJ6xFmOOuvl0lG79Ar3O4hQ=", false, function() {
197    return [
198        useAuth
199    ];
200});
201_c1 = AuthInit;
202export { AuthInit, AuthProvider, getCurrentUserAuthorities, getCurrentUserDetails, getCurrentUserFirstCompany, getCurrentUserCompanies, useAuth };
203var _c, _c1;
204$RefreshReg$(_c, "AuthProvider");
205$RefreshReg$(_c1, "AuthInit");
206
207
208window.$RefreshReg$ = prevRefreshReg;
209window.$RefreshSig$ = prevRefreshSig;
210
211RefreshRuntime.__hmr_import(import.meta.url).then((currentExports) => {
212  RefreshRuntime.registerExportsForReactRefresh("/data/sixsigma/six-sigma-ui/src/app/modules/auth/core/Auth.tsx", currentExports);
213  import.meta.hot.accept((nextExports) => {
214    if (!nextExports) return;
215    const invalidateMessage = RefreshRuntime.validateRefreshBoundaryAndEnqueueUpdate("/data/sixsigma/six-sigma-ui/src/app/modules/auth/core/Auth.tsx", currentExports, nextExports);
216    if (invalidateMessage) import.meta.hot.invalidate(invalidateMessage);
217  });
218});
219
220//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkF1dGgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJlYWN0LXJlZnJlc2gvb25seS1leHBvcnQtY29tcG9uZW50cyAqL1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgRGlzcGF0Y2gsIEZDLCBTZXRTdGF0ZUFjdGlvbiwgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgV2l0aENoaWxkcmVuIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29uZmlnL2hlbHBlcnMnXG5pbXBvcnQgeyBMYXlvdXRTcGxhc2hTY3JlZW4gfSBmcm9tICcuLi8uLi8uLi8uLi9jb25maWcvbGF5b3V0L2NvcmUnXG5pbXBvcnQgeyBBdXRoTW9kZWwsIFVzZXJNb2RlbCB9IGZyb20gJy4vX21vZGVscydcbmltcG9ydCB7IGdldFVzZXJCeVRva2VuIH0gZnJvbSAnLi9fcmVxdWVzdHMnXG5pbXBvcnQgKiBhcyBhdXRoSGVscGVyIGZyb20gJy4vQXV0aEhlbHBlcnMnXG5pbXBvcnQgeyBpbml0aWFsaXplVXNlclRpbWVab25lIH0gZnJvbSAnLi4vLi4vLi4vRGF0ZUNvbnN0YW50cydcblxudHlwZSBBdXRoQ29udGV4dFByb3BzID0ge1xuICBhdXRoOiBBdXRoTW9kZWwgfCB1bmRlZmluZWRcbiAgc2F2ZUF1dGg6IChhdXRoOiBBdXRoTW9kZWwgfCB1bmRlZmluZWQpID0+IHZvaWRcbiAgY3VycmVudFVzZXI6IFVzZXJNb2RlbCB8IHVuZGVmaW5lZFxuICBzZXRDdXJyZW50VXNlcjogRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248VXNlck1vZGVsIHwgdW5kZWZpbmVkPj5cbiAgbG9nb3V0OiAoKSA9PiB2b2lkXG59XG5cbmNvbnN0IGluaXRBdXRoQ29udGV4dFByb3BzU3RhdGUgPSB7XG4gIGF1dGg6IGF1dGhIZWxwZXIuZ2V0QXV0aCgpLFxuICBzYXZlQXV0aDogKCkgPT4geyB9LFxuICBjdXJyZW50VXNlcjogdW5kZWZpbmVkLFxuICBzZXRDdXJyZW50VXNlcjogKCkgPT4geyB9LFxuICBsb2dvdXQ6ICgpID0+IHsgfSxcbn1cblxuY29uc3QgQXV0aENvbnRleHQgPSBjcmVhdGVDb250ZXh0PEF1dGhDb250ZXh0UHJvcHM+KGluaXRBdXRoQ29udGV4dFByb3BzU3RhdGUpXG5cbmNvbnN0IHVzZUF1dGggPSAoKSA9PiB7XG4gIHJldHVybiB1c2VDb250ZXh0KEF1dGhDb250ZXh0KVxufVxuXG5jb25zdCBnZXRDdXJyZW50VXNlckF1dGhvcml0aWVzID0gKCkgPT4ge1xuICBjb25zdCBhdXRoOiBBdXRoQ29udGV4dFByb3BzID0gdXNlQXV0aCgpO1xuICBpZiAoYXV0aC5jdXJyZW50VXNlciAhPSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCB1c2VyOiBVc2VyTW9kZWwgPSBhdXRoLmN1cnJlbnRVc2VyO1xuICAgIHJldHVybiB1c2VyLmF1dGhvcml0aWVzO1xuICB9XG4gIHJldHVybiBuZXcgQXJyYXkoKTtcbn1cbmNvbnN0IGdldEN1cnJlbnRVc2VyQ29tcGFueUF1dGhvcml0aWVzID0gKGNvbXBhbnlJZDogbnVtYmVyKSA9PiB7XG4gIGNvbnN0IGF1dGg6IEF1dGhDb250ZXh0UHJvcHMgPSB1c2VBdXRoKCk7XG5cbiAgaWYgKGF1dGguY3VycmVudFVzZXIpIHtcbiAgICBjb25zdCB1c2VyOiBVc2VyTW9kZWwgPSBhdXRoLmN1cnJlbnRVc2VyO1xuXG4gICAgY29uc3QgY29tcGFueSA9IHVzZXIuY29tcGFuaWVzLmZpbmQoKGMpID0+IGMuaWQgPT09IGNvbXBhbnlJZCk7XG4gICAgaWYgKGNvbXBhbnkpIHtcbiAgICAgIHJldHVybiBjb21wYW55LmF1dGhvcml0aWVzOyAvLyBSZXR1cm4gdGhlIGF1dGhvcml0aWVzIGZvciB0aGUgZm91bmQgY29tcGFueVxuICAgIH1cbiAgfVxuICByZXR1cm4gW107IC8vIFJldHVybiBhbiBlbXB0eSBhcnJheSBpZiBubyBtYXRjaGluZyBjb21wYW55IG9yIHVzZXIgaXMgZm91bmRcbn07XG5cbmNvbnN0IGdldEN1cnJlbnRVc2VyRmlyc3RDb21wYW55ID0gKCkgPT4ge1xuICBjb25zdCBhdXRoOiBBdXRoQ29udGV4dFByb3BzID0gdXNlQXV0aCgpO1xuXG4gIGlmIChhdXRoLmN1cnJlbnRVc2VyKSB7XG4gICAgY29uc3QgdXNlcjogVXNlck1vZGVsID0gYXV0aC5jdXJyZW50VXNlcjtcblxuICAgIC8vIFJldHVybiB0aGUgZmlyc3QgY29tcGFueSBvYmplY3QgaWYgYXZhaWxhYmxlXG4gICAgaWYgKHVzZXIuY29tcGFuaWVzICYmIHVzZXIuY29tcGFuaWVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB1c2VyLmNvbXBhbmllc1swXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDsgLy8gUmV0dXJuIG51bGwgaWYgbm8gY29tcGFuaWVzIGFyZSBhdmFpbGFibGVcbn07XG5jb25zdCBnZXRDdXJyZW50VXNlckNvbXBhbmllcyA9ICgpID0+IHtcbiAgY29uc3QgYXV0aDogQXV0aENvbnRleHRQcm9wcyA9IHVzZUF1dGgoKTtcblxuICBpZiAoYXV0aC5jdXJyZW50VXNlcikge1xuICAgIGNvbnN0IHVzZXI6IFVzZXJNb2RlbCA9IGF1dGguY3VycmVudFVzZXI7XG4gICAgcmV0dXJuIHVzZXIuY29tcGFuaWVzO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7IC8vIFJldHVybiBudWxsIGlmIG5vIGNvbXBhbmllcyBhcmUgYXZhaWxhYmxlXG59O1xuY29uc3QgZ2V0Q3VycmVudFVzZXJEZXRhaWxzID0gKGNvbXBhbnlJZDogbnVtYmVyKSA9PiB7XG4gIGNvbnN0IGF1dGg6IEF1dGhDb250ZXh0UHJvcHMgPSB1c2VBdXRoKCk7XG4gIGxldCBjb21wYW55O1xuICBpZiAoYXV0aC5jdXJyZW50VXNlcikge1xuICAgIGNvbnN0IHVzZXI6IFVzZXJNb2RlbCA9IGF1dGguY3VycmVudFVzZXI7XG5cbiAgICBcbiAgICBpZiAodXNlci5jb21wYW5pZXMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKGNvbXBhbnlJZCA+IDApIHtcbiAgICAgICAgY29tcGFueSA9IHVzZXIuY29tcGFuaWVzLmZpbmQoKGMpID0+IGMuaWQgPT09IGNvbXBhbnlJZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb21wYW55ID0gdXNlci5jb21wYW5pZXNbMF07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE5vIGNvbXBhbnkgaXMgYXZhaWxhYmxlXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoY29tcGFueSkge1xuICAgICAgYXV0aC5jdXJyZW50VXNlci5jb21wYW5pZXMgPSBbY29tcGFueV07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE5vIG1hdGNoaW5nIGNvbXBhbnkgZm91bmRcbiAgICAgIHJldHVybi
220BudWxsO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYXV0aC5jdXJyZW50VXNlcjtcbn07XG5cblxuY29uc3QgQXV0aFByb3ZpZGVyOiBGQzxXaXRoQ2hpbGRyZW4+ID0gKHsgY2hpbGRyZW4gfSkgPT4ge1xuICBjb25zdCBbYXV0aCwgc2V0QXV0aF0gPSB1c2VTdGF0ZTxBdXRoTW9kZWwgfCB1bmRlZmluZWQ+KGF1dGhIZWxwZXIuZ2V0QXV0aCgpKVxuICBjb25zdCBbY3VycmVudFVzZXIsIHNldEN1cnJlbnRVc2VyXSA9IHVzZVN0YXRlPFVzZXJNb2RlbCB8IHVuZGVmaW5lZD4oKVxuICBjb25zdCBzYXZlQXV0aCA9IChhdXRoOiBBdXRoTW9kZWwgfCB1bmRlZmluZWQpID0+IHtcbiAgICBzZXRBdXRoKGF1dGgpXG4gICAgaWYgKGF1dGgpIHtcbiAgICAgIGF1dGhIZWxwZXIuc2V0QXV0aChhdXRoKVxuICAgIH0gZWxzZSB7XG4gICAgICBhdXRoSGVscGVyLnJlbW92ZUF1dGgoKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGxvZ291dCA9ICgpID0+IHtcbiAgIFxuICAgIHNhdmVBdXRoKHVuZGVmaW5lZClcbiAgICBzZXRDdXJyZW50VXNlcih1bmRlZmluZWQpXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxBdXRoQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17eyBhdXRoLCBzYXZlQXV0aCwgY3VycmVudFVzZXIsIHNldEN1cnJlbnRVc2VyLCBsb2dvdXQgfX0+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9BdXRoQ29udGV4dC5Qcm92aWRlcj5cbiAgKVxufVxuXG5jb25zdCBBdXRoSW5pdDogRkM8V2l0aENoaWxkcmVuPiA9ICh7IGNoaWxkcmVuIH0pID0+IHtcbiAgY29uc3QgeyBhdXRoLCBjdXJyZW50VXNlciwgbG9nb3V0LCBzZXRDdXJyZW50VXNlciB9ID0gdXNlQXV0aCgpXG4gIGNvbnN0IFtzaG93U3BsYXNoU2NyZWVuLCBzZXRTaG93U3BsYXNoU2NyZWVuXSA9IHVzZVN0YXRlKHRydWUpXG5cbiAgLy8gV2Ugc2hvdWxkIHJlcXVlc3QgdXNlciBieSBhdXRoVG9rZW4gKElOIE9VUiBFWEFNUExFIElUJ1MgQVBJX1RPS0VOKSBiZWZvcmUgcmVuZGVyaW5nIHRoZSBhcHBsaWNhdGlvblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHJlcXVlc3RVc2VyID0gYXN5bmMgKGFwaVRva2VuOiBzdHJpbmcpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICghY3VycmVudFVzZXIpIHtcbiAgICAgICAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IGdldFVzZXJCeVRva2VuKGFwaVRva2VuKVxuICAgICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICBzZXRDdXJyZW50VXNlcihkYXRhKVxuICAgICAgICAgICAgYXdhaXQgaW5pdGlhbGl6ZVVzZXJUaW1lWm9uZShkYXRhKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcilcbiAgICAgICAgaWYgKGN1cnJlbnRVc2VyKSB7XG4gICAgICAgICAgbG9nb3V0KClcbiAgICAgICAgfVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgc2V0U2hvd1NwbGFzaFNjcmVlbihmYWxzZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoYXV0aCAmJiBhdXRoLmFwaV90b2tlbikge1xuICAgICAgcmVxdWVzdFVzZXIoYXV0aC5hcGlfdG9rZW4pXG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZ291dCgpXG4gICAgICBzZXRTaG93U3BsYXNoU2NyZWVuKGZhbHNlKVxuICAgIH1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgfSwgW10pXG5cbiAgcmV0dXJuIHNob3dTcGxhc2hTY3JlZW4gPyA8TGF5b3V0U3BsYXNoU2NyZWVuIC8+IDogPD57Y2hpbGRyZW59PC8+XG59XG5cbmV4cG9ydCB7IEF1dGhJbml0LCBBdXRoUHJvdmlkZXIsIGdldEN1cnJlbnRVc2VyQXV0aG9yaXRpZXMsZ2V0Q3VycmVudFVzZXJEZXRhaWxzLGdldEN1cnJlbnRVc2VyRmlyc3RDb21wYW55LCBnZXRDdXJyZW50VXNlckNvbXBhbmllcywgdXNlQXV0aCB9XG4iXSwibmFtZXMiOlsiY3JlYXRlQ29udGV4dCIsInVzZUNvbnRleHQiLCJ1c2VFZmZlY3QiLCJ1c2VTdGF0ZSIsIkxheW91dFNwbGFzaFNjcmVlbiIsImdldFVzZXJCeVRva2VuIiwiYXV0aEhlbHBlciIsImluaXRpYWxpemVVc2VyVGltZVpvbmUiLCJpbml0QXV0aENvbnRleHRQcm9wc1N0YXRlIiwiYXV0aCIsImdldEF1dGgiLCJzYXZlQXV0aCIsImN1cnJlbnRVc2VyIiwidW5kZWZpbmVkIiwic2V0Q3VycmVudFVzZXIiLCJsb2dvdXQiLCJBdXRoQ29udGV4dCIsInVzZUF1dGgiLCJnZXRDdXJyZW50VXNlckF1dGhvcml0aWVzIiwidXNlciIsImF1dGhvcml0aWVzIiwiQXJyYXkiLCJnZXRDdXJyZW50VXNlckNvbXBhbnlBdXRob3JpdGllcyIsImNvbXBhbnlJZCIsImNvbXBhbnkiLCJjb21wYW5pZXMiLCJmaW5kIiwiYyIsImlkIiwiZ2V0Q3VycmVudFVzZXJGaXJzdENvbXBhbnkiLCJsZW5ndGgiLCJnZXRDdXJyZW50VXNlckNvbXBhbmllcyIsImdldEN1cnJlbnRVc2VyRGV0YWlscyIsIkF1dGhQcm92aWRlciIsImNoaWxkcmVuIiwic2V0QXV0aCIsInJlbW92ZUF1dGgiLCJQcm92aWRlciIsInZhbHVlIiwiQXV0aEluaXQiLCJzaG93U3BsYXNoU2NyZWVuIiwic2V0U2hvd1NwbGFzaFNjcmVlbiIsInJlcXVlc3RVc2VyIiwiYXBpVG9rZW4
220iLCJkYXRhIiwiZXJyb3IiLCJjb25zb2xlIiwiYXBpX3Rva2VuIl0sInJhbmdlTWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7IiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsdURBQXVEOztBQUN2RCxTQUFTQSxhQUFhLEVBQWdDQyxVQUFVLEVBQUVDLFNBQVMsRUFBRUMsUUFBUSxRQUFRLFFBQU87QUFFcEcsU0FBU0Msa0JBQWtCLFFBQVEsaUNBQWdDO0FBRW5FLFNBQVNDLGNBQWMsUUFBUSxjQUFhO0FBQzVDLFlBQVlDLGdCQUFnQixnQkFBZTtBQUMzQyxTQUFTQyxzQkFBc0IsUUFBUSx5QkFBd0I7QUFVL0QsTUFBTUMsNEJBQTRCO0lBQ2hDQyxNQUFNSCxXQUFXSSxPQUFPO0lBQ3hCQyxVQUFVLEtBQVE7SUFDbEJDLGFBQWFDO0lBQ2JDLGdCQUFnQixLQUFRO0lBQ3hCQyxRQUFRLEtBQVE7QUFDbEI7QUFFQSxNQUFNQyw0QkFBY2hCLGNBQWdDUTtBQUVwRCxNQUFNUyxVQUFVOztJQUNkLE9BQU9oQixXQUFXZTtBQUNwQjtHQUZNQztBQUlOLE1BQU1DLDRCQUE0Qjs7SUFDaEMsTUFBTVQsT0FBeUJRO0lBQy9CLElBQUlSLEtBQUtHLFdBQVcsSUFBSUMsV0FBVztRQUNqQyxNQUFNTSxPQUFrQlYsS0FBS0csV0FBVztRQUN4QyxPQUFPTyxLQUFLQyxXQUFXO0lBQ3pCO0lBQ0EsT0FBTyxJQUFJQztBQUNiO0lBUE1IOztRQUMyQkQ7OztBQU9qQyxNQUFNSyxtQ0FBbUMsQ0FBQ0M7O0lBQ3hDLE1BQU1kLE9BQXlCUTtJQUUvQixJQUFJUixLQUFLRyxXQUFXLEVBQUU7UUFDcEIsTUFB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

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.