├── .gitignore ├── Hands-On ├── knowledge_graph_utils.py ├── mapper.py ├── models │ ├── CAFE │ │ ├── README.md │ │ ├── __init__.py │ │ ├── cafe_utils.py │ │ ├── data_utils.py │ │ ├── execute_neural_symbol.py │ │ ├── my_knowledge_graph.py │ │ ├── preprocess.py │ │ ├── symbolic_model.py │ │ └── train_neural_symbol.py │ ├── PGPR │ │ ├── LICENSE │ │ ├── README.md │ │ ├── __init__.py │ │ ├── data_utils.py │ │ ├── extract_predicted_paths.py │ │ ├── kg_env.py │ │ ├── knowledge_graph.py │ │ ├── pgpr_utils.py │ │ ├── preprocess.py │ │ ├── requirements.txt │ │ ├── test_agent.py │ │ ├── train_agent.py │ │ ├── train_transe_model.py │ │ └── transe_model.py │ └── __init__.py ├── requirements.txt └── utils.py ├── LICENSE.md ├── README.md └── docs ├── css └── style.css ├── img └── favicon.png ├── index.html ├── index_files ├── animate.min.css ├── bootstrap.bundle.min.js.download ├── bootstrap.min.css ├── css ├── easing.min.js.download ├── font-awesome.min.css ├── hoverIntent.js.download ├── jquery-migrate.min.js.download ├── jquery.min.js.download ├── main.js.download ├── owl.carousel.min.css ├── owl.carousel.min.js.download ├── profile.png ├── style.css ├── superfish.min.js.download ├── venobox.css ├── venobox.min.js.download ├── wow.min.js.download └── zoom-logo.png ├── js └── main.js └── lib ├── animate ├── animate.css └── animate.min.css ├── bootstrap ├── css │ ├── bootstrap.css │ └── bootstrap.min.css └── js │ ├── bootstrap.bundle.min.js │ └── bootstrap.min.js ├── easing ├── easing.js └── easing.min.js ├── font-awesome ├── css │ ├── font-awesome.css │ └── font-awesome.min.css └── fonts │ ├── FontAwesome.otf │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.svg │ ├── fontawesome-webfont.ttf │ ├── fontawesome-webfont.woff │ └── fontawesome-webfont.woff2 ├── jquery ├── jquery-migrate.min.js └── jquery.min.js ├── owlcarousel ├── LICENSE ├── assets │ ├── ajax-loader.gif │ ├── owl.carousel.css │ ├── owl.carousel.min.css │ ├── owl.theme.default.css │ ├── owl.theme.default.min.css │ ├── owl.theme.green.css │ ├── owl.theme.green.min.css │ └── owl.video.play.png ├── owl.carousel.js └── owl.carousel.min.js ├── superfish ├── hoverIntent.js ├── superfish.js └── superfish.min.js ├── venobox ├── venobox.css ├── venobox.js └── venobox.min.js └── wow ├── wow.js └── wow.min.js /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/.gitignore -------------------------------------------------------------------------------- /Hands-On/knowledge_graph_utils.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/Hands-On/knowledge_graph_utils.py -------------------------------------------------------------------------------- /Hands-On/mapper.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/Hands-On/mapper.py -------------------------------------------------------------------------------- /Hands-On/models/CAFE/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/Hands-On/models/CAFE/README.md -------------------------------------------------------------------------------- /Hands-On/models/CAFE/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Hands-On/models/CAFE/cafe_utils.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/Hands-On/models/CAFE/cafe_utils.py -------------------------------------------------------------------------------- /Hands-On/models/CAFE/data_utils.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/Hands-On/models/CAFE/data_utils.py -------------------------------------------------------------------------------- /Hands-On/models/CAFE/execute_neural_symbol.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/Hands-On/models/CAFE/execute_neural_symbol.py -------------------------------------------------------------------------------- /Hands-On/models/CAFE/my_knowledge_graph.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/Hands-On/models/CAFE/my_knowledge_graph.py -------------------------------------------------------------------------------- /Hands-On/models/CAFE/preprocess.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/Hands-On/models/CAFE/preprocess.py -------------------------------------------------------------------------------- /Hands-On/models/CAFE/symbolic_model.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/Hands-On/models/CAFE/symbolic_model.py -------------------------------------------------------------------------------- /Hands-On/models/CAFE/train_neural_symbol.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/Hands-On/models/CAFE/train_neural_symbol.py -------------------------------------------------------------------------------- /Hands-On/models/PGPR/LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/Hands-On/models/PGPR/LICENSE -------------------------------------------------------------------------------- /Hands-On/models/PGPR/README.md: -------------------------------------------------------------------------------- 1 | # ExplainableKG-FairnessAware-ML1M-RL -------------------------------------------------------------------------------- /Hands-On/models/PGPR/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Hands-On/models/PGPR/data_utils.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/Hands-On/models/PGPR/data_utils.py -------------------------------------------------------------------------------- /Hands-On/models/PGPR/extract_predicted_paths.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/Hands-On/models/PGPR/extract_predicted_paths.py -------------------------------------------------------------------------------- /Hands-On/models/PGPR/kg_env.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/Hands-On/models/PGPR/kg_env.py -------------------------------------------------------------------------------- /Hands-On/models/PGPR/knowledge_graph.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/Hands-On/models/PGPR/knowledge_graph.py -------------------------------------------------------------------------------- /Hands-On/models/PGPR/pgpr_utils.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/Hands-On/models/PGPR/pgpr_utils.py -------------------------------------------------------------------------------- /Hands-On/models/PGPR/preprocess.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/Hands-On/models/PGPR/preprocess.py -------------------------------------------------------------------------------- /Hands-On/models/PGPR/requirements.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/Hands-On/models/PGPR/requirements.txt -------------------------------------------------------------------------------- /Hands-On/models/PGPR/test_agent.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/Hands-On/models/PGPR/test_agent.py -------------------------------------------------------------------------------- /Hands-On/models/PGPR/train_agent.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/Hands-On/models/PGPR/train_agent.py -------------------------------------------------------------------------------- /Hands-On/models/PGPR/train_transe_model.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/Hands-On/models/PGPR/train_transe_model.py -------------------------------------------------------------------------------- /Hands-On/models/PGPR/transe_model.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/Hands-On/models/PGPR/transe_model.py -------------------------------------------------------------------------------- /Hands-On/models/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Hands-On/requirements.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/Hands-On/requirements.txt -------------------------------------------------------------------------------- /Hands-On/utils.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/Hands-On/utils.py -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/LICENSE.md -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/README.md -------------------------------------------------------------------------------- /docs/css/style.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/css/style.css -------------------------------------------------------------------------------- /docs/img/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/img/favicon.png -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/index.html -------------------------------------------------------------------------------- /docs/index_files/animate.min.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/index_files/animate.min.css -------------------------------------------------------------------------------- /docs/index_files/bootstrap.bundle.min.js.download: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/index_files/bootstrap.bundle.min.js.download -------------------------------------------------------------------------------- /docs/index_files/bootstrap.min.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/index_files/bootstrap.min.css -------------------------------------------------------------------------------- /docs/index_files/css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/index_files/css -------------------------------------------------------------------------------- /docs/index_files/easing.min.js.download: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/index_files/easing.min.js.download -------------------------------------------------------------------------------- /docs/index_files/font-awesome.min.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/index_files/font-awesome.min.css -------------------------------------------------------------------------------- /docs/index_files/hoverIntent.js.download: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/index_files/hoverIntent.js.download -------------------------------------------------------------------------------- /docs/index_files/jquery-migrate.min.js.download: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/index_files/jquery-migrate.min.js.download -------------------------------------------------------------------------------- /docs/index_files/jquery.min.js.download: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/index_files/jquery.min.js.download -------------------------------------------------------------------------------- /docs/index_files/main.js.download: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/index_files/main.js.download -------------------------------------------------------------------------------- /docs/index_files/owl.carousel.min.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/index_files/owl.carousel.min.css -------------------------------------------------------------------------------- /docs/index_files/owl.carousel.min.js.download: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/index_files/owl.carousel.min.js.download -------------------------------------------------------------------------------- /docs/index_files/profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/index_files/profile.png -------------------------------------------------------------------------------- /docs/index_files/style.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/index_files/style.css -------------------------------------------------------------------------------- /docs/index_files/superfish.min.js.download: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/index_files/superfish.min.js.download -------------------------------------------------------------------------------- /docs/index_files/venobox.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/index_files/venobox.css -------------------------------------------------------------------------------- /docs/index_files/venobox.min.js.download: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/index_files/venobox.min.js.download -------------------------------------------------------------------------------- /docs/index_files/wow.min.js.download: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/index_files/wow.min.js.download -------------------------------------------------------------------------------- /docs/index_files/zoom-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/index_files/zoom-logo.png -------------------------------------------------------------------------------- /docs/js/main.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/js/main.js -------------------------------------------------------------------------------- /docs/lib/animate/animate.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/lib/animate/animate.css -------------------------------------------------------------------------------- /docs/lib/animate/animate.min.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/lib/animate/animate.min.css -------------------------------------------------------------------------------- /docs/lib/bootstrap/css/bootstrap.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/lib/bootstrap/css/bootstrap.css -------------------------------------------------------------------------------- /docs/lib/bootstrap/css/bootstrap.min.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/lib/bootstrap/css/bootstrap.min.css -------------------------------------------------------------------------------- /docs/lib/bootstrap/js/bootstrap.bundle.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/lib/bootstrap/js/bootstrap.bundle.min.js -------------------------------------------------------------------------------- /docs/lib/bootstrap/js/bootstrap.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/lib/bootstrap/js/bootstrap.min.js -------------------------------------------------------------------------------- /docs/lib/easing/easing.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/lib/easing/easing.js -------------------------------------------------------------------------------- /docs/lib/easing/easing.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/lib/easing/easing.min.js -------------------------------------------------------------------------------- /docs/lib/font-awesome/css/font-awesome.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/lib/font-awesome/css/font-awesome.css -------------------------------------------------------------------------------- /docs/lib/font-awesome/css/font-awesome.min.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/lib/font-awesome/css/font-awesome.min.css -------------------------------------------------------------------------------- /docs/lib/font-awesome/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/lib/font-awesome/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /docs/lib/font-awesome/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/lib/font-awesome/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /docs/lib/font-awesome/fonts/fontawesome-webfont.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/lib/font-awesome/fonts/fontawesome-webfont.svg -------------------------------------------------------------------------------- /docs/lib/font-awesome/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/lib/font-awesome/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /docs/lib/font-awesome/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/lib/font-awesome/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /docs/lib/font-awesome/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/lib/font-awesome/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /docs/lib/jquery/jquery-migrate.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/lib/jquery/jquery-migrate.min.js -------------------------------------------------------------------------------- /docs/lib/jquery/jquery.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/lib/jquery/jquery.min.js -------------------------------------------------------------------------------- /docs/lib/owlcarousel/LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/lib/owlcarousel/LICENSE -------------------------------------------------------------------------------- /docs/lib/owlcarousel/assets/ajax-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/lib/owlcarousel/assets/ajax-loader.gif -------------------------------------------------------------------------------- /docs/lib/owlcarousel/assets/owl.carousel.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/lib/owlcarousel/assets/owl.carousel.css -------------------------------------------------------------------------------- /docs/lib/owlcarousel/assets/owl.carousel.min.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/lib/owlcarousel/assets/owl.carousel.min.css -------------------------------------------------------------------------------- /docs/lib/owlcarousel/assets/owl.theme.default.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/lib/owlcarousel/assets/owl.theme.default.css -------------------------------------------------------------------------------- /docs/lib/owlcarousel/assets/owl.theme.default.min.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/lib/owlcarousel/assets/owl.theme.default.min.css -------------------------------------------------------------------------------- /docs/lib/owlcarousel/assets/owl.theme.green.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/lib/owlcarousel/assets/owl.theme.green.css -------------------------------------------------------------------------------- /docs/lib/owlcarousel/assets/owl.theme.green.min.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/lib/owlcarousel/assets/owl.theme.green.min.css -------------------------------------------------------------------------------- /docs/lib/owlcarousel/assets/owl.video.play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/lib/owlcarousel/assets/owl.video.play.png -------------------------------------------------------------------------------- /docs/lib/owlcarousel/owl.carousel.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/lib/owlcarousel/owl.carousel.js -------------------------------------------------------------------------------- /docs/lib/owlcarousel/owl.carousel.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/lib/owlcarousel/owl.carousel.min.js -------------------------------------------------------------------------------- /docs/lib/superfish/hoverIntent.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/lib/superfish/hoverIntent.js -------------------------------------------------------------------------------- /docs/lib/superfish/superfish.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/lib/superfish/superfish.js -------------------------------------------------------------------------------- /docs/lib/superfish/superfish.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/lib/superfish/superfish.min.js -------------------------------------------------------------------------------- /docs/lib/venobox/venobox.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/lib/venobox/venobox.css -------------------------------------------------------------------------------- /docs/lib/venobox/venobox.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/lib/venobox/venobox.js -------------------------------------------------------------------------------- /docs/lib/venobox/venobox.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/lib/venobox/venobox.min.js -------------------------------------------------------------------------------- /docs/lib/wow/wow.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/lib/wow/wow.js -------------------------------------------------------------------------------- /docs/lib/wow/wow.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/explainablerecsys/recsys2022/HEAD/docs/lib/wow/wow.min.js --------------------------------------------------------------------------------