qis 3.2.3__tar.gz → 3.2.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {qis-3.2.3 → qis-3.2.4}/PKG-INFO +1 -1
- {qis-3.2.3 → qis-3.2.4}/pyproject.toml +1 -1
- {qis-3.2.3 → qis-3.2.4}/qis/examples/core/perf_bbg_prices.py +34 -5
- {qis-3.2.3 → qis-3.2.4}/qis/plots/derived/returns_heatmap.py +1 -1
- {qis-3.2.3 → qis-3.2.4}/qis/portfolio/reports/config.py +3 -3
- {qis-3.2.3 → qis-3.2.4}/qis/portfolio/reports/multi_assets_factsheet.py +6 -3
- {qis-3.2.3 → qis-3.2.4}/qis/settings.yaml +0 -1
- {qis-3.2.3 → qis-3.2.4}/LICENSE.txt +0 -0
- {qis-3.2.3 → qis-3.2.4}/README.md +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/__init__.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/best_returns.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/bond_futures_portfolio.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/bootstrap_analysis.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/boxplot_conditional_returns.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/btc_asset_corr.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/constant_notional.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/constant_weight_portfolios.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/core/price_plots.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/core/us_election.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/credit_spreads.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/credit_trackers.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/europe_futures.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/factsheets/multi_assets.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/factsheets/multi_strategy.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/factsheets/pyblogs_reports.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/factsheets/strategy.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/factsheets/strategy_benchmark.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/generate_option_rolls.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/interpolation_infrequent_returns.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/leveraged_strategies.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/long_short.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/momentum_indices.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/ohlc_vol_analysis.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/overnight_returns.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/perf_external_assets.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/perp_pricing.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/readme_performances.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/risk_return_frontier.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/rolling_performance.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/seasonality.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/sharpe_vs_sortino.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/simulate_quant_strats.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/test_ewm.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/test_scatter.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/try_pybloqs.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/universe_corrs.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/vix_beta_to_equities_bonds.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/vix_conditional_returns.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/vix_spy_by_year.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/vix_tenor_analysis.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/examples/vol_without_weekends.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/file_utils.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/local_path.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/models/README.md +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/models/__init__.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/models/linear/__init__.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/models/linear/auto_corr.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/models/linear/corr_cov_matrix.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/models/linear/ewm.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/models/linear/ewm_convolution.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/models/linear/ewm_factors.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/models/linear/ewm_winsor_outliers.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/models/linear/pca.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/models/linear/plot_correlations.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/models/linear/ra_returns.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/models/stats/__init__.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/models/stats/bootstrap.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/models/stats/ohlc_vol.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/models/stats/rolling_stats.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/models/stats/test_bootstrap.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/perfstats/README.md +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/perfstats/__init__.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/perfstats/cond_regression.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/perfstats/config.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/perfstats/desc_table.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/perfstats/fx_ops.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/perfstats/perf_stats.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/perfstats/regime_classifier.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/perfstats/returns.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/perfstats/timeseries_bfill.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/plots/README.md +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/plots/__init__.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/plots/bars.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/plots/boxplot.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/plots/contour.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/plots/derived/__init__.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/plots/derived/data_timeseries.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/plots/derived/desc_table.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/plots/derived/drawdowns.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/plots/derived/perf_table.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/plots/derived/prices.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/plots/derived/regime_class_table.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/plots/derived/regime_data.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/plots/derived/regime_pdf.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/plots/derived/regime_scatter.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/plots/derived/returns_scatter.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/plots/errorbar.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/plots/heatmap.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/plots/histogram.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/plots/histplot2d.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/plots/lineplot.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/plots/pie.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/plots/qqplot.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/plots/reports/__init__.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/plots/reports/econ_data_single.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/plots/reports/gantt_data_history.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/plots/reports/price_history.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/plots/reports/utils.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/plots/scatter.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/plots/stackplot.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/plots/table.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/plots/time_series.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/plots/utils.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/portfolio/README.md +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/portfolio/__init__.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/portfolio/backtester.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/portfolio/ewm_portfolio_risk.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/portfolio/multi_portfolio_data.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/portfolio/portfolio_data.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/portfolio/reports/__init__.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/portfolio/reports/brinson_attribution.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/portfolio/reports/multi_strategy_factseet_pybloqs.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/portfolio/reports/multi_strategy_factsheet.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/portfolio/reports/strategy_benchmark_factsheet.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/portfolio/reports/strategy_benchmark_factsheet_pybloqs.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/portfolio/reports/strategy_factsheet.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/portfolio/reports/strategy_signal_factsheet.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/portfolio/strats/__init__.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/portfolio/strats/quant_strats_delta1.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/portfolio/strats/seasonal_strats.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/sql_engine.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/test_data.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/utils/README.md +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/utils/__init__.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/utils/dates.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/utils/df_agg.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/utils/df_cut.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/utils/df_freq.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/utils/df_groups.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/utils/df_melt.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/utils/df_ops.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/utils/df_str.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/utils/df_to_scores.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/utils/df_to_weights.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/utils/generic.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/utils/np_ops.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/utils/ols.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/utils/sampling.py +0 -0
- {qis-3.2.3 → qis-3.2.4}/qis/utils/struct_ops.py +0 -0
{qis-3.2.3 → qis-3.2.4}/PKG-INFO
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: qis
|
3
|
-
Version: 3.2.
|
3
|
+
Version: 3.2.4
|
4
4
|
Summary: Implementation of visualisation and reporting analytics for Quantitative Investment Strategies
|
5
5
|
License: LICENSE.txt
|
6
6
|
Keywords: quantitative,investing,portfolio optimization,systematic strategies,volatility
|
@@ -22,15 +22,44 @@ def run_report():
|
|
22
22
|
'BNPXOV3U Index': 'BNP 3M Long DHhedged Puts'
|
23
23
|
}
|
24
24
|
|
25
|
+
benchmark = 'SPTR Index'
|
26
|
+
tickers = {
|
27
|
+
benchmark: benchmark,
|
28
|
+
'BNPIV1EE Index': 'BNP Europe 1Y Volatility',
|
29
|
+
'BNPIV1UE Index': 'BNP US 1Y Volatility',
|
30
|
+
'BNPXVO3A Index': 'BNP VOLA 3 Index',
|
31
|
+
'AIJPVT1U Index': 'JPM Volatility Trend Following',
|
32
|
+
'JPOSLVUS Index': 'JPM US Long Variance',
|
33
|
+
'JPOSPRU2 Index': 'JPM US Put Ratio',
|
34
|
+
'JPOSTUDN Index': 'JPM US Equity Tail Hedge',
|
35
|
+
'JPRC85BE Index': 'JPM Dynamic 85% Rolling Collar EU',
|
36
|
+
'JPRC85BU Index': 'JPM Dynamic 85% Rolling Collar US',
|
37
|
+
'JPUSVXCR Index': 'JPM US Volatility Call Ratio'
|
38
|
+
}
|
39
|
+
|
40
|
+
benchmark = 'HYG US Equity'
|
41
|
+
tickers = {
|
42
|
+
benchmark: benchmark,
|
43
|
+
'NMVVR1EL Index': 'IRVING1 EUR',
|
44
|
+
'NMVVR1UL Index': 'IRVING1 USD',
|
45
|
+
'NMVVR1L Index': 'IRVING1',
|
46
|
+
'BNPXLVRE Index': 'BNP Long Rates Vol EUR',
|
47
|
+
'BNPXLVRU Index': 'BNP Long Rates Vol USD',
|
48
|
+
'BXIIULSV Index': 'Barclays Long Rates Vol',
|
49
|
+
'BXIIUGNT Index': 'Barclays Gamma Neutral Vol',
|
50
|
+
'BXIIUENT Index': 'Barclays Triangle Vol'
|
51
|
+
}
|
52
|
+
|
25
53
|
prices = fetch_field_timeseries_per_tickers(tickers=tickers, freq='B', field='PX_LAST').ffill()
|
26
54
|
print(prices)
|
27
|
-
qis.save_df_to_csv(df=prices, file_name='qis_vol_indices', local_path=qis.get_output_path())
|
55
|
+
# qis.save_df_to_csv(df=prices, file_name='qis_vol_indices', local_path=qis.get_output_path())
|
28
56
|
|
29
|
-
time_period = qis.TimePeriod('
|
30
|
-
kwargs = qis.fetch_default_report_kwargs(time_period=time_period, add_rates_data=False)
|
57
|
+
time_period = qis.TimePeriod('31Dec2024', '07Apr2025')
|
58
|
+
#kwargs = qis.fetch_default_report_kwargs(time_period=time_period, add_rates_data=False)
|
59
|
+
kwargs = qis.fetch_factsheet_config_kwargs(factsheet_config=qis.FACTSHEET_CONFIG_DAILY_DATA_SHORT_PERIOD)
|
31
60
|
|
32
61
|
fig = qis.generate_multi_asset_factsheet(prices=prices,
|
33
|
-
benchmark=
|
62
|
+
benchmark=benchmark,
|
34
63
|
time_period=time_period,
|
35
64
|
**kwargs)
|
36
65
|
qis.save_figs_to_pdf(figs=[fig],
|
@@ -70,7 +99,7 @@ def run_unit_test(unit_test: UnitTests):
|
|
70
99
|
|
71
100
|
if __name__ == '__main__':
|
72
101
|
|
73
|
-
unit_test = UnitTests.
|
102
|
+
unit_test = UnitTests.REPORT
|
74
103
|
|
75
104
|
is_run_all_tests = False
|
76
105
|
if is_run_all_tests:
|
@@ -82,9 +82,9 @@ class FactsheetConfig(NamedTuple):
|
|
82
82
|
# create enumerations
|
83
83
|
FACTSHEET_CONFIG_DAILY_DATA_LONG_PERIOD = FactsheetConfig()
|
84
84
|
|
85
|
-
FACTSHEET_CONFIG_DAILY_DATA_SHORT_PERIOD = FactsheetConfig(heatmap_freq='
|
86
|
-
x_date_freq='
|
87
|
-
freq_regime='
|
85
|
+
FACTSHEET_CONFIG_DAILY_DATA_SHORT_PERIOD = FactsheetConfig(heatmap_freq='ME',
|
86
|
+
x_date_freq='ME',
|
87
|
+
freq_regime='W-WED',
|
88
88
|
freq_reg='W-WED',
|
89
89
|
alpha_an_factor=52
|
90
90
|
)
|
@@ -60,6 +60,8 @@ class MultiAssetsReport:
|
|
60
60
|
prices = pd.concat([self.benchmark_prices[benchmark], self.prices], axis=1)
|
61
61
|
else:
|
62
62
|
prices = self.prices
|
63
|
+
# check in case
|
64
|
+
prices = prices.loc[:, ~prices.columns.duplicated(keep='first')]
|
63
65
|
if time_period is not None:
|
64
66
|
prices = time_period.locate(prices)
|
65
67
|
return prices
|
@@ -68,7 +70,7 @@ class MultiAssetsReport:
|
|
68
70
|
regime_benchmark: str,
|
69
71
|
data_df: pd.DataFrame,
|
70
72
|
time_period: TimePeriod = None,
|
71
|
-
regime_params: BenchmarkReturnsQuantileRegimeSpecs =
|
73
|
+
regime_params: BenchmarkReturnsQuantileRegimeSpecs = None
|
72
74
|
) -> None:
|
73
75
|
if isinstance(self.benchmark_prices, pd.Series):
|
74
76
|
pivot_prices = self.benchmark_prices
|
@@ -83,7 +85,7 @@ class MultiAssetsReport:
|
|
83
85
|
data_df=data_df,
|
84
86
|
pivot_prices=pivot_prices,
|
85
87
|
benchmark=regime_benchmark,
|
86
|
-
regime_params=regime_params)
|
88
|
+
regime_params=regime_params or self.regime_params)
|
87
89
|
|
88
90
|
def plot_ra_perf_table(self,
|
89
91
|
benchmark: str,
|
@@ -334,6 +336,7 @@ class MultiAssetsReport:
|
|
334
336
|
roll_freq=freq_sharpe,
|
335
337
|
legend_stats=legend_stats,
|
336
338
|
regime_benchmark=regime_benchmark,
|
339
|
+
regime_params=self.regime_params,
|
337
340
|
ax=ax,
|
338
341
|
**kwargs)
|
339
342
|
return fig
|
@@ -417,7 +420,7 @@ def generate_multi_asset_factsheet(prices: pd.DataFrame,
|
|
417
420
|
heatmap_freq: str = 'YE',
|
418
421
|
time_period: TimePeriod = None, # time period for reporting
|
419
422
|
figsize: Tuple[float, float] = (8.3, 11.7), # A4 for portrait
|
420
|
-
fontsize: int =
|
423
|
+
fontsize: int = 4,
|
421
424
|
factsheet_name: str = None,
|
422
425
|
performance_bars: Tuple[PerfStat, PerfStat] = (PerfStat.SHARPE_RF0, PerfStat.MAX_DD),
|
423
426
|
drop_1y_ra_perf_table: bool = True,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|