make ui build with react-scripts
@@ -1,30 +0,0 @@
|
||||
{
|
||||
"plugins": ["react-intl-format"],
|
||||
"extends": ["plugin:react/recommended", "plugin:jest/recommended"],
|
||||
"settings": {
|
||||
"react": {
|
||||
"version": "detect"
|
||||
}
|
||||
},
|
||||
"parser": "babel-eslint",
|
||||
"rules": {
|
||||
"react-intl-format/missing-formatted-message": [
|
||||
"error",
|
||||
{
|
||||
"noTrailingWhitespace": false,
|
||||
"ignoreLinks": false
|
||||
}
|
||||
],
|
||||
"react-intl-format/missing-attribute": [
|
||||
"error",
|
||||
{
|
||||
"noTrailingWhitespace": false,
|
||||
"noSpreadOperator": true
|
||||
}
|
||||
],
|
||||
"react-intl-format/missing-values": [
|
||||
"error"
|
||||
],
|
||||
"react/display-name": "off"
|
||||
}
|
||||
}
|
||||
13
services/idp/.eslintrc.json.old
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"plugins": [],
|
||||
"extends": ["plugin:react/recommended", "plugin:jest/recommended"],
|
||||
"settings": {
|
||||
"react": {
|
||||
"version": "detect"
|
||||
}
|
||||
},
|
||||
"parser": "babel-eslint",
|
||||
"rules": {
|
||||
"react/display-name": "off"
|
||||
}
|
||||
}
|
||||
43
services/idp/build/asset-manifest.json
Normal file
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"files": {
|
||||
"static/js/0.d72ad80e.chunk.js": "./static/js/0.d72ad80e.chunk.js",
|
||||
"static/js/0.d72ad80e.chunk.js.map": "./static/js/0.d72ad80e.chunk.js.map",
|
||||
"all-i18n-data.js": "./static/js/all-i18n-data.b70e1b10.chunk.js",
|
||||
"all-i18n-data.js.map": "./static/js/all-i18n-data.b70e1b10.chunk.js.map",
|
||||
"containers-goodbye.js": "./static/js/containers-goodbye.73a43b3a.chunk.js",
|
||||
"containers-goodbye.js.map": "./static/js/containers-goodbye.73a43b3a.chunk.js.map",
|
||||
"containers-login.js": "./static/js/containers-login.12d6de0c.chunk.js",
|
||||
"containers-login.js.map": "./static/js/containers-login.12d6de0c.chunk.js.map",
|
||||
"containers-welcome.js": "./static/js/containers-welcome.5ccd8775.chunk.js",
|
||||
"containers-welcome.js.map": "./static/js/containers-welcome.5ccd8775.chunk.js.map",
|
||||
"identifier-main.js": "./static/js/identifier-main.e7071e05.chunk.js",
|
||||
"identifier-main.js.map": "./static/js/identifier-main.e7071e05.chunk.js.map",
|
||||
"main.css": "./static/css/main.764be232.chunk.css",
|
||||
"main.js": "./static/js/main.07adb608.chunk.js",
|
||||
"main.js.map": "./static/js/main.07adb608.chunk.js.map",
|
||||
"runtime-main.js": "./static/js/runtime-main.1fc1a3e2.js",
|
||||
"runtime-main.js.map": "./static/js/runtime-main.1fc1a3e2.js.map",
|
||||
"static/css/8.ecdf1f8d.chunk.css": "./static/css/8.ecdf1f8d.chunk.css",
|
||||
"static/js/8.3c32a16d.chunk.js": "./static/js/8.3c32a16d.chunk.js",
|
||||
"static/js/8.3c32a16d.chunk.js.map": "./static/js/8.3c32a16d.chunk.js.map",
|
||||
"static/js/9.5b190729.chunk.js": "./static/js/9.5b190729.chunk.js",
|
||||
"static/js/9.5b190729.chunk.js.map": "./static/js/9.5b190729.chunk.js.map",
|
||||
"static/js/10.1ef89b9b.chunk.js": "./static/js/10.1ef89b9b.chunk.js",
|
||||
"static/js/10.1ef89b9b.chunk.js.map": "./static/js/10.1ef89b9b.chunk.js.map",
|
||||
"index.html": "./index.html",
|
||||
"static/css/8.ecdf1f8d.chunk.css.map": "./static/css/8.ecdf1f8d.chunk.css.map",
|
||||
"static/css/main.764be232.chunk.css.map": "./static/css/main.764be232.chunk.css.map",
|
||||
"static/js/0.d72ad80e.chunk.js.LICENSE.txt": "./static/js/0.d72ad80e.chunk.js.LICENSE.txt",
|
||||
"static/js/10.1ef89b9b.chunk.js.LICENSE.txt": "./static/js/10.1ef89b9b.chunk.js.LICENSE.txt",
|
||||
"static/js/8.3c32a16d.chunk.js.LICENSE.txt": "./static/js/8.3c32a16d.chunk.js.LICENSE.txt",
|
||||
"static/js/9.5b190729.chunk.js.LICENSE.txt": "./static/js/9.5b190729.chunk.js.LICENSE.txt",
|
||||
"static/media/app.css": "./static/media/background.7296b9ab.jpg"
|
||||
},
|
||||
"entrypoints": [
|
||||
"static/js/runtime-main.1fc1a3e2.js",
|
||||
"static/css/8.ecdf1f8d.chunk.css",
|
||||
"static/js/8.3c32a16d.chunk.js",
|
||||
"static/css/main.764be232.chunk.css",
|
||||
"static/js/main.07adb608.chunk.js"
|
||||
]
|
||||
}
|
||||
1
services/idp/build/index.html
Normal file
@@ -0,0 +1 @@
|
||||
<!doctype html><html lang="en"><head data-kopano-build="%REACT_APP_KOPANO_BUILD%"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name="theme-color" content="#1b223d"><link rel="shortcut icon" href="./static/favicon.ico" type="image/x-icon"><link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@300;400;600&display=swap" rel="stylesheet"><meta property="csp-nonce" content="__CSP_NONCE__"><title>Sign in - ownCloud</title><link href="./static/css/8.ecdf1f8d.chunk.css" rel="stylesheet"><link href="./static/css/main.764be232.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><main id="root" class="oc-login-bg" data-path-prefix="__PATH_PREFIX__" passwort-reset-link="__PASSWORD_RESET_LINK__"></main><script src="./static/js/runtime-main.1fc1a3e2.js"></script><script src="./static/js/8.3c32a16d.chunk.js"></script><script src="./static/js/main.07adb608.chunk.js"></script></body></html>
|
||||
2
services/idp/build/static/css/8.ecdf1f8d.chunk.css
Normal file
@@ -0,0 +1,2 @@
|
||||
body,html{height:100%}body{margin:0;padding:0}#bg{position:fixed;top:0;bottom:0;left:0;right:0;background:#fff}#loader{position:absolute;bottom:6%;left:50%;font-weight:400;font-family:"Roboto","Helvetica","Arial",sans-serif;color:#666;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}#loader>a{color:#1e98d7}#font-preloader{position:absolute;top:-500px;font-weight:400;color:#fff;font-family:"Roboto","Helvetica","Arial",sans-serif}#font-preloader>span{font-weight:500}#root{height:100%;display:flex}*{scrollbar-width:thin;scrollbar-color:#ddd #f5f5f5}body:hover *{scrollbar-color:#bdbdbd #f5f5f5}::-webkit-scrollbar{height:8px;width:8px;background:transparent;overflow:visible}::-webkit-scrollbar-corner{display:none;background:#f5f5f5}::-webkit-scrollbar-button{display:none;height:0;width:0}::-webkit-scrollbar-button:end:increment,::-webkit-scrollbar-button:start:decrement{display:block}::-webkit-scrollbar-button:vertical:end:decrement,::-webkit-scrollbar-button:vertical:start:increment{display:none}::-webkit-scrollbar-track{-moz-background-clip:border;-webkit-background-clip:border;background-clip:padding-box;background-color:#f5f5f5}::-webkit-scrollbar-track:horizontal,::-webkit-scrollbar-track:vertical{border-left-width:0;border-right-width:0}::-webkit-scrollbar-thumb:horizontal,::-webkit-scrollbar-thumb:vertical,::-webkit-scrollbar-track:horizontal,::-webkit-scrollbar-track:vertical{border-style:solid;border-color:transparent}::-webkit-scrollbar-thumb{background-clip:padding-box;background-color:#ddd;min-height:40px;padding-top:100px;border-radius:4px}::-webkit-scrollbar-thumb:hover,body:hover ::-webkit-scrollbar-thumb{background-color:#bdbdbd}::-webkit-scrollbar-thumb:active{background-color:#989898}::-webkit-scrollbar-thumb:horizontal,::-webkit-scrollbar-thumb:vertical{border-width:0}
|
||||
/*# sourceMappingURL=8.ecdf1f8d.chunk.css.map */
|
||||
1
services/idp/build/static/css/8.ecdf1f8d.chunk.css.map
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["webpack://node_modules/kpop/static/css/base.css","webpack://node_modules/kpop/static/css/scrollbar.css"],"names":[],"mappings":"AAAA,UACE,WACF,CAEA,KACE,QAAS,CACT,SACF,CAEA,IACE,cAAe,CACf,KAAM,CACN,QAAS,CACT,MAAO,CACP,OAAQ,CACR,eACF,CAEA,QACE,iBAAkB,CAClB,SAAU,CACV,QAAS,CACT,eAAgB,CAChB,mDAAuD,CACvD,UAAW,CACX,sCAAgC,CAAhC,8BACF,CAEA,UACE,aACF,CAEA,gBACE,iBAAkB,CAClB,UAAW,CACX,eAAgB,CAChB,UAAY,CACZ,mDACF,CAEA,qBACE,eACF,CAEA,MACE,WAAY,CACZ,YACF,CC7CA,EACE,oBAAqB,CACrB,4BACF,CAEA,aACE,+BACF,CAIA,oBACE,UAAW,CACX,SAAU,CACV,sBAAuB,CACvB,gBACF,CAEA,2BACE,YAAa,CACb,kBACF,CAEA,2BACE,YAAa,CACb,QAAQ,CACR,OACF,CAEA,oFACE,aACF,CAEA,sGACE,YACF,CAEA,0BACE,2BAA4B,CAC5B,8BAA+B,CAC/B,2BAA4B,CAC5B,wBACF,CAEA,wEACE,mBAAoB,CACpB,oBACF,CAEA,gJACE,kBAAmB,CACnB,wBACF,CAEA,0BACE,2BAA4B,CAC5B,qBAAsB,CACtB,eAAgB,CAChB,iBAAkB,CAClB,iBACF,CAMA,qEACE,wBACF,CAEA,iCACE,wBACF,CAEA,wEAGE,cACF","file":"8.ecdf1f8d.chunk.css","sourcesContent":["html, body {\n height: 100%;\n}\n\nbody {\n margin: 0;\n padding: 0;\n}\n\n#bg {\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background: white;\n}\n\n#loader {\n position: absolute;\n bottom: 6%;\n left: 50%;\n font-weight: 400;\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n color: #666;\n transform: translate(-50%, -50%);\n}\n\n#loader > a {\n color: #1e98d7 /* KopanoBlue700 */\n}\n\n#font-preloader {\n position: absolute;\n top: -500px;\n font-weight: 400;\n color: white;\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n}\n\n#font-preloader > span {\n font-weight: 500;\n}\n\n#root {\n height: 100%;\n display: flex;\n}\n","/* CSS Scrollbars, currently only Firefox: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Scrollbars */\n\n* {\n scrollbar-width: thin;\n scrollbar-color: #ddd #f5f5f5;\n}\n\nbody:hover * {\n scrollbar-color: #bdbdbd #f5f5f5;\n}\n\n/* Webkit specific scrollbars, works in Chrome and Safari */\n\n::-webkit-scrollbar {\n height: 8px;\n width: 8px;\n background: transparent;\n overflow: visible;\n}\n\n::-webkit-scrollbar-corner {\n display: none;\n background: #f5f5f5;\n}\n\n::-webkit-scrollbar-button {\n display: none;\n height:0;\n width: 0;\n}\n\n::-webkit-scrollbar-button:start:decrement,::-webkit-scrollbar-button:end:increment {\n display: block;\n}\n\n::-webkit-scrollbar-button:vertical:start:increment,::-webkit-scrollbar-button:vertical:end:decrement {\n display: none;\n}\n\n::-webkit-scrollbar-track {\n -moz-background-clip: border;\n -webkit-background-clip: border;\n background-clip: padding-box;\n background-color: #f5f5f5;\n}\n\n::-webkit-scrollbar-track:vertical, ::-webkit-scrollbar-track:horizontal {\n border-left-width: 0;\n border-right-width: 0;\n}\n\n::-webkit-scrollbar-track:vertical,::-webkit-scrollbar-track:horizontal,::-webkit-scrollbar-thumb:vertical,::-webkit-scrollbar-thumb:horizontal,::-webkit-scrollbar-track:vertical,::-webkit-scrollbar-track:horizontal,::-webkit-scrollbar-thumb:vertical,::-webkit-scrollbar-thumb:horizontal {\n border-style: solid;\n border-color: transparent;\n}\n\n::-webkit-scrollbar-thumb {\n background-clip: padding-box;\n background-color: #ddd;\n min-height: 40px;\n padding-top: 100px;\n border-radius: 4px;\n}\n\nbody:hover ::-webkit-scrollbar-thumb {\n background-color: #bdbdbd;\n}\n\n::-webkit-scrollbar-thumb:hover {\n background-color: #bdbdbd;\n}\n\n::-webkit-scrollbar-thumb:active {\n background-color: #989898;\n}\n\n::-webkit-scrollbar-thumb:vertical, ::-webkit-scrollbar-thumb:horizontal {\n border-width: 0;\n border-left-width: 0;\n border-right-width: 0;\n}\n"]}
|
||||
2
services/idp/build/static/css/main.764be232.chunk.css
Normal file
@@ -0,0 +1,2 @@
|
||||
#bg{background-color:#fff}#bg>div{position:fixed;top:0;width:100%;height:100%;background-size:cover;background-repeat:no-repeat;background-position:50%;background-image:url(../../static/media/background.7296b9ab.jpg);z-index:0}body{font-family:"Open Sans",sans-serif}strong{font-weight:600}.oc-login-bg{background-image:url(../../static/media/background.7296b9ab.jpg);background-size:cover;background-repeat:no-repeat;background-position:50%;z-index:0}#loader{color:#fff;text-shadow:#000 0 0 1px}.oc-logo{position:absolute;top:-130px;left:50%;height:80px;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.oc-progress{background-color:rgba(78,133,200,.8)!important;height:4px;width:100px}.oc-progress>div{background-color:#4a76ac!important}.oc-input{background-color:#042047;border:1px solid rgba(78,133,200,.8);border-radius:3px;color:hsla(0,0%,100%,.8);height:40px;width:300px;padding:16px;box-sizing:border-box;font-size:1rem}.oc-label{color:#fff;display:inline-block;margin-bottom:5px}.oc-input.error{outline:none;border:1px solid #fe4600}.MuiTypography-colorError{color:#fe4600!important}.oc-input:focus{outline:none;border:1px solid #fff}.oc-input::-webkit-input-placeholder{color:rgba(78,133,200,.8)}.oc-input::placeholder{color:rgba(78,133,200,.8)}.oc-input+.oc-input{margin-top:15px}.MuiTouchRipple-root{display:none!important}.oc-button{font-size:1.0625rem!important}.oc-button-primary{background-color:#4a76ac!important;border:1px solid transparent!important}.oc-button-primary:focus,.oc-button-primary:hover{background-color:#4a76ac!important;border:1px solid #fff!important}.oc-checkbox-dark svg{fill:#fff!important}.oc-footer-message{color:#fff;padding:10px;font-size:.8rem}@media only screen and (max-width:768px){.oc-logo{height:60px;top:-90px}}.oc-mt-l{margin-top:30px!important}.oc-mb-m{margin-bottom:20px!important}.oc-light{color:#fff!important}.oc-login-form div:not(:last-of-type){margin-bottom:15px}.oc-invisible-sr{border:0!important;clip:rect(1px,1px,1px,1px)!important;height:1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;top:0;white-space:nowrap;width:1px!important}
|
||||
/*# sourceMappingURL=main.764be232.chunk.css.map */
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["webpack://src/fancy-background.css","webpack://src/app.css"],"names":[],"mappings":"AAEA,IACE,qBACF,CAEA,QACE,cAAe,CACf,KAAM,CACN,UAAW,CACX,WAAY,CACZ,qBAAsB,CACtB,2BAA4B,CAC5B,uBAA2B,CAC3B,gEAA8C,CAC9C,SACF,CCfA,KACE,kCACF,CAEA,OACE,eACF,CAEA,aACE,gEAA8C,CAC9C,qBAAsB,CACtB,2BAA4B,CAC5B,uBAA2B,CAC3B,SACF,CAEA,QAEE,UAAY,CACZ,wBACF,CAEA,SACE,iBAAkB,CAClB,UAAW,CACX,QAAS,CACT,WAAY,CACZ,kCAA2B,CAA3B,0BACF,CAEA,aAEE,8CAAoD,CACpD,UAAW,CACX,WACF,CAEA,iBAEE,kCACF,CAEA,UACE,wBAAyB,CACzB,oCAAyC,CACzC,iBAAkB,CAClB,wBAA+B,CAC/B,WAAY,CACZ,WAAY,CACZ,YAAa,CACb,qBAAsB,CACtB,cACF,CAEA,UACE,UAAW,CACX,oBAAqB,CACrB,iBACF,CAEA,gBACE,YAAa,CACb,wBACF,CAEA,0BACE,uBACF,CAEA,gBACE,YAAa,CACb,qBACF,CAEA,qCACE,yBACF,CAFA,uBACE,yBACF,CAEA,oBACE,eACF,CAEA,qBACE,sBACF,CAEA,WAEE,6BACF,CAEA,mBAEE,kCAAoC,CACpC,sCACF,CAEA,kDAGE,kCAAoC,CACpC,+BACF,CAEA,sBAEE,mBACF,CAEA,mBACE,UAAY,CACZ,YAAa,CACb,eACF,CAEA,yCACE,SACE,WAAY,CACZ,SACF,CACF,CAGA,SACE,yBACF,CAEA,SACE,4BACF,CAEA,UACE,oBACF,CAEA,sCACE,kBACF,CAOA,iBACE,kBAAoB,CACpB,oCAAyC,CACzC,oBAAsB,CACtB,yBAA2B,CAC3B,mBAAqB,CAErB,2BAA6B,CAC7B,KAAM,CACN,kBAAmB,CACnB,mBACF","file":"main.764be232.chunk.css","sourcesContent":["/* not so fancy background */\n\n#bg {\n background-color: white;\n}\n\n#bg > div {\n position: fixed;\n top: 0;\n width: 100%;\n height: 100%;\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center;\n background-image: url(./images/background.jpg);\n z-index: 0;\n}\n","/* additional css on top of kpop */\nbody {\n font-family: 'Open Sans', sans-serif;\n}\n\nstrong {\n font-weight: 600;\n}\n\n.oc-login-bg {\n background-image: url(./images/background.jpg);\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center;\n z-index: 0;\n}\n\n#loader {\n /* NOTE(longsleep): White here needed because of the background image */\n color: white;\n text-shadow: #000 0 0 1px;\n}\n\n.oc-logo {\n position: absolute;\n top: -130px;\n left: 50%;\n height: 80px;\n transform: translateX(-50%);\n}\n\n.oc-progress {\n /* Needs to be important to overwrite material-ui */\n background-color: rgba(78, 133, 200, 0.8) !important;\n height: 4px;\n width: 100px;\n}\n\n.oc-progress > div {\n /* Needs to be important to overwrite material-ui */\n background-color: #4a76ac !important;\n}\n\n.oc-input {\n background-color: #042047;\n border: 1px solid rgba(78, 133, 200, 0.8);\n border-radius: 3px;\n color: rgba(255, 255, 255, 0.8);\n height: 40px;\n width: 300px;\n padding: 16px;\n box-sizing: border-box;\n font-size: 1rem;\n}\n\n.oc-label {\n color: #fff;\n display: inline-block;\n margin-bottom: 5px;\n}\n\n.oc-input.error {\n outline: none;\n border: 1px solid #fe4600;\n}\n\n.MuiTypography-colorError {\n color: #fe4600 !important;\n}\n\n.oc-input:focus {\n outline: none;\n border: 1px solid #fff;\n}\n\n.oc-input::placeholder {\n color: rgba(78, 133, 200, 0.8);\n}\n\n.oc-input + .oc-input {\n margin-top: 15px;\n}\n\n.MuiTouchRipple-root {\n display: none !important;\n}\n\n.oc-button {\n /* Needs to be important to overwrite material-ui */\n font-size: 1.0625rem !important;\n}\n\n.oc-button-primary {\n /* Needs to be important to overwrite material-ui */\n background-color: #4a76ac !important;\n border: 1px solid transparent !important;\n}\n\n.oc-button-primary:hover,\n.oc-button-primary:focus {\n /* Needs to be important to overwrite material-ui */\n background-color: #4a76ac !important;\n border: 1px solid white !important;\n}\n\n.oc-checkbox-dark svg {\n /* Needs to be important to overwrite material-ui */\n fill: white !important;\n}\n\n.oc-footer-message {\n color: white;\n padding: 10px;\n font-size: 0.8rem;\n}\n\n@media only screen and (max-width: 768px) {\n .oc-logo {\n height: 60px;\n top: -90px;\n }\n}\n\n/* Helpers */\n.oc-mt-l {\n margin-top: 30px !important;\n}\n\n.oc-mb-m {\n margin-bottom: 20px !important;\n}\n\n.oc-light {\n color: #fff !important;\n}\n\n.oc-login-form div:not(:last-of-type) {\n margin-bottom: 15px;\n}\n\n\n/*\n * Special SR classes\n * Used to hide an element visually, but keeping it accessible for accessibility tools.\n */\n.oc-invisible-sr {\n border: 0 !important;\n clip: rect(1px, 1px, 1px, 1px) !important;\n height: 1px !important;\n overflow: hidden !important;\n padding: 0 !important;\n /* Need to make sure we override any existing styles. */\n position: absolute !important;\n top: 0;\n white-space: nowrap;\n width: 1px !important;\n}\n"]}
|
||||
|
Before Width: | Height: | Size: 106 KiB After Width: | Height: | Size: 106 KiB |
3
services/idp/build/static/js/0.d72ad80e.chunk.js
Normal file
@@ -0,0 +1,5 @@
|
||||
/*!
|
||||
Copyright (c) 2018 Jed Watson.
|
||||
Licensed under the MIT License (MIT), see
|
||||
http://jedwatson.github.io/classnames
|
||||
*/
|
||||
1
services/idp/build/static/js/0.d72ad80e.chunk.js.map
Normal file
3
services/idp/build/static/js/10.1ef89b9b.chunk.js
Normal file
@@ -0,0 +1,24 @@
|
||||
/**!
|
||||
* @fileOverview Kickass library to create and place poppers near their reference elements.
|
||||
* @version 1.16.1-lts
|
||||
* @license
|
||||
* Copyright (c) 2016 Federico Zivolo and contributors
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
1
services/idp/build/static/js/10.1ef89b9b.chunk.js.map
Normal file
3
services/idp/build/static/js/8.3c32a16d.chunk.js
Normal file
67
services/idp/build/static/js/8.3c32a16d.chunk.js.LICENSE.txt
Normal file
@@ -0,0 +1,67 @@
|
||||
/*
|
||||
object-assign
|
||||
(c) Sindre Sorhus
|
||||
@license MIT
|
||||
*/
|
||||
|
||||
/**
|
||||
* A better abstraction over CSS.
|
||||
*
|
||||
* @copyright Oleg Isonen (Slobodskoi) / Isonen 2014-present
|
||||
* @website https://github.com/cssinjs/jss
|
||||
* @license MIT
|
||||
*/
|
||||
|
||||
/** @license React v0.20.2
|
||||
* scheduler.production.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
/** @license React v16.13.1
|
||||
* react-is.production.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
/** @license React v17.0.2
|
||||
* react-dom.production.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
/** @license React v17.0.2
|
||||
* react-is.production.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
/** @license React v17.0.2
|
||||
* react-jsx-runtime.production.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
/** @license React v17.0.2
|
||||
* react.production.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
1
services/idp/build/static/js/8.3c32a16d.chunk.js.map
Normal file
3
services/idp/build/static/js/9.5b190729.chunk.js
Normal file
@@ -0,0 +1,8 @@
|
||||
/** @license React v16.13.1
|
||||
* react-is.production.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
1
services/idp/build/static/js/9.5b190729.chunk.js.map
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":[],"names":[],"mappings":"","file":"static/js/all-i18n-data.b70e1b10.chunk.js","sourceRoot":""}
|
||||
@@ -0,0 +1,2 @@
|
||||
(this.webpackJsonpidentifier=this.webpackJsonpidentifier||[]).push([[5],{157:function(e,t,n){"use strict";var a=n(128),c=n(2),r=(n(0),n(181)),o=n(126),l=n(6),i=["target","location"];t.a=Object(r.a)((function(e){var t=e.target,n=e.location,r=Object(c.a)(e,i),b={pathname:t,search:n.search,hash:n.hash};return Object(l.jsx)(o.a,Object(a.a)({to:b},r))}))},232:function(e,t,n){"use strict";n.r(t);var a=n(7),c=n(3),r=n(20),o=n(130),l=n(0),i=n(49),b=n(140),u=n(126),j=n(128),h=n(2),s=n(157),p=n(6),O=["component","hello"],f=function(e){var t=e.component,n=e.hello,a=Object(h.a)(e,O);return Object(p.jsx)(u.b,Object(j.a)(Object(j.a)({},a),{},{render:function(e){return n?Object(p.jsx)(t,Object(j.a)({},e)):Object(p.jsx)(s.a,{target:"/identifier"})}}))},d=Object(l.lazy)((function(){return Promise.all([n.e(0),n.e(10),n.e(3)]).then(n.bind(null,228))})),x=Object(l.lazy)((function(){return Promise.all([n.e(0),n.e(4)]).then(n.bind(null,234))})),m=Object(l.lazy)((function(){return Promise.all([n.e(0),n.e(2)]).then(n.bind(null,235))})),v=function(e){var t=e.hello;return Object(p.jsxs)(u.d,{children:[Object(p.jsx)(f,{path:"/welcome",exact:!0,component:x,hello:t}),Object(p.jsx)(u.b,{path:"/goodbye",exact:!0,component:m}),Object(p.jsx)(u.b,{path:"/",component:d})]})},y=function(e){Object(r.a)(n,e);var t=Object(o.a)(n);function n(){return Object(a.a)(this,n),t.apply(this,arguments)}return Object(c.a)(n,[{key:"render",value:function(){var e=this.props,t=e.hello,n=e.pathPrefix;return Object(p.jsx)(b.a,{basename:n,children:Object(p.jsx)(v,{hello:t})})}},{key:"reload",value:function(e){e.preventDefault(),window.location.reload()}}]),n}(l.PureComponent);t.default=Object(i.b)((function(e){var t=e.common;return{hello:t.hello,updateAvailable:t.updateAvailable,pathPrefix:t.pathPrefix}}))(y)}}]);
|
||||
//# sourceMappingURL=identifier-main.e7071e05.chunk.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["components/RedirectWithQuery.jsx","components/PrivateRoute.jsx","Routes.jsx","Main.jsx"],"names":["withRouter","target","location","rest","to","pathname","search","hash","PrivateRoute","Target","component","hello","render","props","RedirectWithQuery","AsyncLogin","lazy","AsyncWelcome","AsyncGoodbye","Routes","path","exact","Main","this","pathPrefix","basename","event","preventDefault","window","reload","PureComponent","connect","state","common","updateAvailable"],"mappings":"sLAsBeA,iBAjBW,SAAC,GAAiC,IAAhCC,EAA+B,EAA/BA,OAAQC,EAAuB,EAAvBA,SAAaC,EAAU,iBACnDC,EAAK,CACTC,SAAUJ,EACVK,OAAQJ,EAASI,OACjBC,KAAML,EAASK,MAGjB,OACE,cAAC,IAAD,aAAUH,GAAIA,GAAQD,Q,oKCQXK,EAfM,SAAC,GAAD,IAAcC,EAAd,EAAGC,UAAmBC,EAAtB,EAAsBA,MAAUR,EAAhC,wBACnB,cAAC,IAAD,2BAAWA,GAAX,IAAiBS,OAAQ,SAAAC,GAAK,OAC5BF,EACE,cAACF,EAAD,eAAYI,IAEZ,cAACC,EAAA,EAAD,CAAmBb,OAAO,qBCJ1Bc,EAAaC,gBAAK,kBACtB,+DACIC,EAAeD,gBAAK,kBACxB,uDACIE,EAAeF,gBAAK,kBACxB,uDA0BaG,EAxBA,SAAC,GAAD,IAAGR,EAAH,EAAGA,MAAH,OACb,eAAC,IAAD,WACE,cAAC,EAAD,CACES,KAAK,WACLC,OAAK,EACLX,UAAWO,EACXN,MAAOA,IAET,cAAC,IAAD,CACES,KAAK,WACLC,OAAK,EACLX,UAAWQ,IAEb,cAAC,IAAD,CACEE,KAAK,IACLV,UAAWK,QCrBXO,E,4JACJ,WACE,MAA8BC,KAAKV,MAA3BF,EAAR,EAAQA,MAAOa,EAAf,EAAeA,WAEf,OACE,cAAC,IAAD,CAAeC,SAAUD,EAAzB,SACE,cAAC,EAAD,CAAQb,MAAOA,Q,oBAKrB,SAAOe,GACLA,EAAMC,iBAENC,OAAO1B,SAAS2B,a,GAdDC,iBAoCJC,uBAVS,SAACC,GACvB,MAA+CA,EAAMC,OAErD,MAAO,CACLtB,MAHF,EAAQA,MAINuB,gBAJF,EAAeA,gBAKbV,WALF,EAAgCA,cASnBO,CAAyBT","file":"static/js/identifier-main.e7071e05.chunk.js","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter } from 'react-router';\nimport { Redirect } from 'react-router-dom';\n\nconst RedirectWithQuery = ({target, location, ...rest}) => {\n const to = {\n pathname: target,\n search: location.search,\n hash: location.hash\n };\n\n return (\n <Redirect to={to} {...rest}></Redirect>\n );\n};\n\nRedirectWithQuery.propTypes = {\n target: PropTypes.string.isRequired,\n location: PropTypes.object.isRequired\n};\n\nexport default withRouter(RedirectWithQuery);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Route } from 'react-router-dom';\n\nimport RedirectWithQuery from './RedirectWithQuery';\n\nconst PrivateRoute = ({ component: Target, hello, ...rest }) => (\n <Route {...rest} render={props => (\n hello ? (\n <Target {...props}/>\n ) : (\n <RedirectWithQuery target='/identifier' />\n )\n )}/>\n);\n\nPrivateRoute.propTypes = {\n component: PropTypes.elementType.isRequired,\n hello: PropTypes.object\n};\n\nexport default PrivateRoute;\n","import React, { lazy } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Route, Switch } from 'react-router-dom';\n\nimport PrivateRoute from './components/PrivateRoute';\n\nconst AsyncLogin = lazy(() =>\n import(/* webpackChunkName: \"containers-login\" */ './containers/Login'));\nconst AsyncWelcome = lazy(() =>\n import(/* webpackChunkName: \"containers-welcome\" */ './containers/Welcome'));\nconst AsyncGoodbye = lazy(() =>\n import(/* webpackChunkName: \"containers-goodbye\" */ './containers/Goodbye'));\n\nconst Routes = ({ hello }) => (\n <Switch>\n <PrivateRoute\n path=\"/welcome\"\n exact\n component={AsyncWelcome}\n hello={hello}\n />\n <Route\n path=\"/goodbye\"\n exact\n component={AsyncGoodbye}\n />\n <Route\n path=\"/\"\n component={AsyncLogin}\n />\n </Switch>\n);\n\nRoutes.propTypes = {\n hello: PropTypes.object\n};\n\nexport default Routes;\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport { BrowserRouter } from 'react-router-dom';\n\nimport Routes from './Routes';\n\nclass Main extends PureComponent {\n render() {\n const { hello, pathPrefix } = this.props;\n\n return (\n <BrowserRouter basename={pathPrefix}>\n <Routes hello={hello}/>\n </BrowserRouter>\n );\n }\n\n reload(event) {\n event.preventDefault();\n\n window.location.reload();\n }\n}\n\nMain.propTypes = {\n classes: PropTypes.object.isRequired,\n\n hello: PropTypes.object,\n updateAvailable: PropTypes.bool.isRequired,\n pathPrefix: PropTypes.string.isRequired\n};\n\nconst mapStateToProps = (state) => {\n const { hello, updateAvailable, pathPrefix } = state.common;\n\n return {\n hello,\n updateAvailable,\n pathPrefix\n };\n};\n\nexport default connect(mapStateToProps)(Main);\n"],"sourceRoot":""}
|
||||
2
services/idp/build/static/js/main.07adb608.chunk.js
Normal file
1
services/idp/build/static/js/main.07adb608.chunk.js.map
Normal file
2
services/idp/build/static/js/runtime-main.1fc1a3e2.js
Normal file
@@ -0,0 +1,2 @@
|
||||
!function(e){function t(t){for(var r,u,c=t[0],l=t[1],f=t[2],s=t[3]||[],d=0,h=[];d<c.length;d++)u=c[d],Object.prototype.hasOwnProperty.call(o,u)&&o[u]&&h.push(o[u][0]),o[u]=0;for(r in l)Object.prototype.hasOwnProperty.call(l,r)&&(e[r]=l[r]);for(p&&p(t),a.push.apply(a,s);h.length;)h.shift()();return i.push.apply(i,f||[]),n()}function n(){for(var e,t=0;t<i.length;t++){for(var n=i[t],r=!0,l=1;l<n.length;l++){var f=n[l];0!==o[f]&&(r=!1)}r&&(i.splice(t--,1),e=c(c.s=n[0]))}return 0===i.length&&(a.forEach((function(e){if(void 0===o[e]){o[e]=null;var t=document.createElement("link");c.nc&&t.setAttribute("nonce",c.nc),t.rel="prefetch",t.as="script",t.href=u(e),document.head.appendChild(t)}})),a.length=0),e}var r={},o={7:0},i=[],a=[];function u(e){return c.p+"static/js/"+({1:"all-i18n-data",2:"containers-goodbye",3:"containers-login",4:"containers-welcome",5:"identifier-main"}[e]||e)+"."+{0:"d72ad80e",1:"b70e1b10",2:"73a43b3a",3:"12d6de0c",4:"5ccd8775",5:"e7071e05",9:"5b190729",10:"1ef89b9b"}[e]+".chunk.js"}function c(t){if(r[t])return r[t].exports;var n=r[t]={i:t,l:!1,exports:{}};return e[t].call(n.exports,n,n.exports,c),n.l=!0,n.exports}c.e=function(e){var t=[],n=o[e];if(0!==n)if(n)t.push(n[2]);else{var r=new Promise((function(t,r){n=o[e]=[t,r]}));t.push(n[2]=r);var i,a=document.createElement("script");a.charset="utf-8",a.timeout=120,c.nc&&a.setAttribute("nonce",c.nc),a.src=u(e);var l=new Error;i=function(t){a.onerror=a.onload=null,clearTimeout(f);var n=o[e];if(0!==n){if(n){var r=t&&("load"===t.type?"missing":t.type),i=t&&t.target&&t.target.src;l.message="Loading chunk "+e+" failed.\n("+r+": "+i+")",l.name="ChunkLoadError",l.type=r,l.request=i,n[1](l)}o[e]=void 0}};var f=setTimeout((function(){i({type:"timeout",target:a})}),12e4);a.onerror=a.onload=i,document.head.appendChild(a)}return Promise.all(t)},c.m=e,c.c=r,c.d=function(e,t,n){c.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},c.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},c.t=function(e,t){if(1&t&&(e=c(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(c.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)c.d(n,r,function(t){return e[t]}.bind(null,r));return n},c.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return c.d(t,"a",t),t},c.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},c.p="./",c.oe=function(e){throw console.error(e),e};var l=this.webpackJsonpidentifier=this.webpackJsonpidentifier||[],f=l.push.bind(l);l.push=t,l=l.slice();for(var s=0;s<l.length;s++)t(l[s]);var p=f;n()}([]);
|
||||
//# sourceMappingURL=runtime-main.1fc1a3e2.js.map
|
||||
|
Before Width: | Height: | Size: 86 KiB After Width: | Height: | Size: 86 KiB |
@@ -5,7 +5,7 @@
|
||||
"homepage": ".",
|
||||
"scripts": {
|
||||
"analyze": "source-map-explorer 'build/static/js/*.js'",
|
||||
"build": "node scripts/build.js && rm -f build/service-worker.js",
|
||||
"build": "react-scripts build",
|
||||
"eject": "react-scripts eject",
|
||||
"licenses": "NODE_PATH=./node_modules node ../scripts/js-license-ranger.js",
|
||||
"licenses:check": "license-checker-rseidelsohn --summary --relativeLicensePath --onlyAllow 'Python-2.0;Apache*;Apache License, Version 2.0;Apache-2.0;Apache 2.0;Artistic-2.0;BSD;BSD-3-Clause;CC-BY-3.0;CC-BY-4.0;CC0-1.0;ISC;MIT;MPL-2.0;Public Domain;Unicode-TOU;Unlicense;WTFPL' --excludePackages 'identifier;kpop;po2json;unicoderegexp'",
|
||||
@@ -45,12 +45,8 @@
|
||||
"rules": {
|
||||
"no-unused-vars": "off",
|
||||
"no-use-before-define": "off",
|
||||
"@typescript-eslint/no-unused-vars": [
|
||||
"error"
|
||||
],
|
||||
"@typescript-eslint/no-use-before-define": [
|
||||
"error"
|
||||
],
|
||||
"@typescript-eslint/no-unused-vars": [0],
|
||||
"@typescript-eslint/no-use-before-define": [0],
|
||||
"i18next/no-literal-string": [
|
||||
"off",
|
||||
{
|
||||
@@ -68,7 +64,16 @@
|
||||
"@fontsource/roboto": "^4.5.1",
|
||||
"@material-ui/core": "^4.12.3",
|
||||
"@material-ui/icons": "^4.11.2",
|
||||
"axios": "^0.27.2",
|
||||
"@testing-library/jest-dom": "^5.11.4",
|
||||
"@testing-library/react": "^11.1.0",
|
||||
"@testing-library/user-event": "^12.1.10",
|
||||
"@types/jest": "^26.0.15",
|
||||
"@types/node": "^12.0.0",
|
||||
"@types/react": "^17.0.2",
|
||||
"@types/react-dom": "^17.0.2",
|
||||
"@types/react-redux": "^7.1.19",
|
||||
"@types/redux-logger": "^3.0.9",
|
||||
"axios": "^0.22.0",
|
||||
"classnames": "^2.2.6",
|
||||
"i18next": "^21.6.13",
|
||||
"i18next-browser-languagedetector": "^6.1.3",
|
||||
@@ -87,37 +92,15 @@
|
||||
"redux-logger": "^3.0.6",
|
||||
"redux-thunk": "^2.2.0",
|
||||
"render-if": "^0.1.1",
|
||||
"typescript": "^4.1.2",
|
||||
"web-vitals": "^1.0.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@testing-library/dom": "^8.14.0",
|
||||
"@testing-library/jest-dom": "^5.11.4",
|
||||
"@testing-library/react": "^11.1.0",
|
||||
"@testing-library/user-event": "^12.1.10",
|
||||
"@types/jest": "^26.0.15",
|
||||
"@types/node": "^12.0.0",
|
||||
"@types/react": "^17.0.2",
|
||||
"@types/react-dom": "^17.0.2",
|
||||
"@types/react-redux": "^7.1.19",
|
||||
"@types/redux-logger": "^3.0.9",
|
||||
"babel-eslint": "^10.1.0",
|
||||
"cldr": "^7.1.1",
|
||||
"eslint": "^8.18.0",
|
||||
"eslint-loader": "^4.0.2",
|
||||
"eslint-plugin-i18next": "^5.1.2",
|
||||
"eslint-plugin-jest": "^26.5.3",
|
||||
"eslint-plugin-react": "^7.30.1",
|
||||
"eslint-plugin-react-intl-format": "^1.1.7",
|
||||
"html-webpack-plugin": "4.5.2",
|
||||
"i18next-conv": "^12.1.0",
|
||||
"i18next-parser": "^5.4.0",
|
||||
"mini-css-extract-plugin": "^2.6.1",
|
||||
"optimize-css-assets-webpack-plugin": "^6.0.1",
|
||||
"react-dev-utils": "^11.0.4",
|
||||
"source-map-explorer": "^1.8.0",
|
||||
"typescript": "^4.1.2",
|
||||
"webpack": "^5.73.0",
|
||||
"webpack-manifest-plugin": "^4.1.1",
|
||||
"workbox-webpack-plugin": "^6.5.3"
|
||||
"yarn-deduplicate": "^1.1.1"
|
||||
}
|
||||
}
|
||||
|
||||
BIN
services/idp/public/static/favicon.ico
Normal file
|
After Width: | Height: | Size: 106 KiB |
@@ -4,13 +4,11 @@ import { connect } from 'react-redux';
|
||||
|
||||
import { BrowserRouter } from 'react-router-dom';
|
||||
|
||||
import { withStyles } from '@material-ui/core/styles';
|
||||
|
||||
import Routes from './Routes';
|
||||
|
||||
class Main extends PureComponent {
|
||||
render() {
|
||||
const { classes, hello, pathPrefix } = this.props;
|
||||
const { hello, pathPrefix } = this.props;
|
||||
|
||||
return (
|
||||
<BrowserRouter basename={pathPrefix}>
|
||||
@@ -15,7 +15,7 @@ import { ErrorMessage } from '../errors';
|
||||
|
||||
class Loading extends React.PureComponent {
|
||||
render() {
|
||||
const { classes, error, t } = this.props;
|
||||
const { error, t } = this.props;
|
||||
|
||||
return (
|
||||
<Grid item align="center">
|
||||
@@ -6,12 +6,9 @@ import { Trans } from 'react-i18next';
|
||||
|
||||
import { withStyles } from '@material-ui/core/styles';
|
||||
import Grid from '@material-ui/core/Grid';
|
||||
import DialogActions from '@material-ui/core/DialogActions';
|
||||
import DialogContent from '@material-ui/core/DialogContent';
|
||||
|
||||
import ResponsiveDialog from './ResponsiveDialog';
|
||||
import Loading from './Loading';
|
||||
import LocaleSelect from './LocaleSelect';
|
||||
|
||||
const styles = theme => ({
|
||||
root: {
|
||||
@@ -43,11 +40,8 @@ const ResponsiveScreen = (props) => {
|
||||
withoutLogo,
|
||||
withoutPadding,
|
||||
loading,
|
||||
branding,
|
||||
children,
|
||||
className,
|
||||
DialogProps,
|
||||
PaperProps,
|
||||
...other
|
||||
} = props;
|
||||
|
||||
@@ -22,7 +22,7 @@ TextInput.propTypes = {
|
||||
placeholder: PropTypes.object,
|
||||
label: PropTypes.object,
|
||||
id: PropTypes.string,
|
||||
extraClassName: props.string,
|
||||
extraClassName: PropTypes.string,
|
||||
}
|
||||
|
||||
export default TextInput;
|
||||
BIN
services/idp/src/images/background.jpg
Normal file
|
After Width: | Height: | Size: 86 KiB |
|
Before Width: | Height: | Size: 685 B After Width: | Height: | Size: 685 B |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |